mirror of
https://gitlab.futo.org/videostreaming/grayjay.git
synced 2025-04-20 03:24:50 +00:00
Minor refactor, handle simple sendToDevice packet
This commit is contained in:
parent
12ac4d6b6f
commit
c4061cc6ac
12 changed files with 39 additions and 28 deletions
|
@ -12,8 +12,8 @@ import com.futo.platformplayer.R
|
|||
import com.futo.platformplayer.setNavigationBarColorAndIcons
|
||||
import com.futo.platformplayer.states.StateApp
|
||||
import com.futo.platformplayer.states.StateSync
|
||||
import com.futo.platformplayer.sync.LinkType
|
||||
import com.futo.platformplayer.sync.SyncSession
|
||||
import com.futo.platformplayer.sync.internal.LinkType
|
||||
import com.futo.platformplayer.sync.internal.SyncSession
|
||||
import com.futo.platformplayer.views.sync.SyncDeviceView
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
|
|
@ -3,7 +3,6 @@ package com.futo.platformplayer.activities
|
|||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.util.Base64
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.widget.EditText
|
||||
import android.widget.ImageButton
|
||||
|
@ -17,17 +16,12 @@ import com.futo.platformplayer.logging.Logger
|
|||
import com.futo.platformplayer.setNavigationBarColorAndIcons
|
||||
import com.futo.platformplayer.states.StateApp
|
||||
import com.futo.platformplayer.states.StateSync
|
||||
import com.futo.platformplayer.sync.SyncDeviceInfo
|
||||
import com.futo.platformplayer.sync.SyncSocketSession
|
||||
import com.futo.platformplayer.sync.internal.SyncDeviceInfo
|
||||
import com.google.zxing.integration.android.IntentIntegrator
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.isActive
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import kotlinx.serialization.json.Json
|
||||
import java.nio.ByteBuffer
|
||||
import java.util.Random
|
||||
|
||||
class SyncPairActivity : AppCompatActivity() {
|
||||
private lateinit var _editCode: EditText
|
||||
|
|
|
@ -7,7 +7,6 @@ import android.graphics.Bitmap
|
|||
import android.graphics.Color
|
||||
import android.os.Bundle
|
||||
import android.util.Base64
|
||||
import android.util.Log
|
||||
import android.util.TypedValue
|
||||
import android.view.View
|
||||
import android.widget.ImageButton
|
||||
|
@ -21,7 +20,7 @@ import com.futo.platformplayer.logging.Logger
|
|||
import com.futo.platformplayer.setNavigationBarColorAndIcons
|
||||
import com.futo.platformplayer.states.StateApp
|
||||
import com.futo.platformplayer.states.StateSync
|
||||
import com.futo.platformplayer.sync.SyncDeviceInfo
|
||||
import com.futo.platformplayer.sync.internal.SyncDeviceInfo
|
||||
import com.google.zxing.BarcodeFormat
|
||||
import com.google.zxing.MultiFormatWriter
|
||||
import com.google.zxing.common.BitMatrix
|
||||
|
|
|
@ -20,10 +20,10 @@ import com.futo.platformplayer.stores.FragmentedStorage
|
|||
import com.futo.platformplayer.stores.StringStringMapStorage
|
||||
import com.futo.platformplayer.stores.StringArrayStorage
|
||||
import com.futo.platformplayer.stores.StringStorage
|
||||
import com.futo.platformplayer.sync.SyncDeviceInfo
|
||||
import com.futo.platformplayer.sync.SyncKeyPair
|
||||
import com.futo.platformplayer.sync.SyncSession
|
||||
import com.futo.platformplayer.sync.SyncSocketSession
|
||||
import com.futo.platformplayer.sync.internal.SyncDeviceInfo
|
||||
import com.futo.platformplayer.sync.internal.SyncKeyPair
|
||||
import com.futo.platformplayer.sync.internal.SyncSession
|
||||
import com.futo.platformplayer.sync.internal.SyncSocketSession
|
||||
import com.futo.polycentric.core.base64ToByteArray
|
||||
import com.futo.polycentric.core.toBase64
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package com.futo.platformplayer.sync;
|
||||
package com.futo.platformplayer.sync.internal;
|
||||
|
||||
public enum LinkType {
|
||||
None,
|
|
@ -1,4 +1,4 @@
|
|||
package com.futo.platformplayer.sync
|
||||
package com.futo.platformplayer.sync.internal
|
||||
|
||||
@kotlinx.serialization.Serializable
|
||||
class SyncDeviceInfo {
|
|
@ -1,4 +1,4 @@
|
|||
package com.futo.platformplayer.sync
|
||||
package com.futo.platformplayer.sync.internal
|
||||
|
||||
@kotlinx.serialization.Serializable
|
||||
class SyncKeyPair {
|
|
@ -1,7 +1,13 @@
|
|||
package com.futo.platformplayer.sync
|
||||
package com.futo.platformplayer.sync.internal
|
||||
|
||||
import com.futo.platformplayer.UIDialogs
|
||||
import com.futo.platformplayer.activities.MainActivity
|
||||
import com.futo.platformplayer.logging.Logger
|
||||
import com.futo.platformplayer.sync.SyncSocketSession.Opcode
|
||||
import com.futo.platformplayer.states.StateApp
|
||||
import com.futo.platformplayer.states.StatePlayer
|
||||
import com.futo.platformplayer.sync.internal.SyncSocketSession.Opcode
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import java.nio.ByteBuffer
|
||||
|
||||
interface IAuthorizable {
|
||||
|
@ -110,6 +116,19 @@ class SyncSession : IAuthorizable {
|
|||
}
|
||||
|
||||
Logger.i(TAG, "Received ${opcode} (${data.remaining()} bytes)")
|
||||
//TODO: Abstract this out
|
||||
when(opcode) {
|
||||
GJSyncOpcodes.sendToDevices -> {
|
||||
StateApp.instance.scopeOrNull?.launch(Dispatchers.Main) {
|
||||
val context = StateApp.instance.contextOrNull;
|
||||
if(context != null && context is MainActivity) {
|
||||
val url = String(data.array(), Charsets.UTF_8);
|
||||
UIDialogs.appToast("Received url from device [${socketSession.remotePublicKey}]:\n{$url}");
|
||||
context.handleUrl(url);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private companion object {
|
|
@ -1,4 +1,4 @@
|
|||
package com.futo.platformplayer.sync
|
||||
package com.futo.platformplayer.sync.internal
|
||||
|
||||
import com.futo.platformplayer.LittleEndianDataInputStream
|
||||
import com.futo.platformplayer.LittleEndianDataOutputStream
|
||||
|
@ -95,7 +95,7 @@ class SyncSocketSession {
|
|||
try {
|
||||
val messageSize = _inputStream.readInt()
|
||||
if (messageSize > MAXIMUM_PACKET_SIZE_ENCRYPTED) {
|
||||
throw Exception("Message size (${messageSize}) cannot exceed MAXIMUM_PACKET_SIZE (${MAXIMUM_PACKET_SIZE_ENCRYPTED})")
|
||||
throw Exception("Message size (${messageSize}) cannot exceed MAXIMUM_PACKET_SIZE ($MAXIMUM_PACKET_SIZE_ENCRYPTED)")
|
||||
}
|
||||
|
||||
//Logger.i(TAG, "Receiving message (size = ${messageSize})")
|
|
@ -1,4 +1,4 @@
|
|||
package com.futo.platformplayer.sync
|
||||
package com.futo.platformplayer.sync.internal
|
||||
|
||||
class SyncStream(expectedSize: Int, val opcode: UByte) {
|
||||
companion object {
|
|
@ -9,7 +9,7 @@ import android.widget.TextView
|
|||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.futo.platformplayer.R
|
||||
import com.futo.platformplayer.constructs.Event0
|
||||
import com.futo.platformplayer.sync.LinkType
|
||||
import com.futo.platformplayer.sync.internal.LinkType
|
||||
|
||||
class SyncDeviceView : ConstraintLayout {
|
||||
val _imageLinkType: ImageView
|
||||
|
|
|
@ -8,9 +8,9 @@ import com.futo.platformplayer.noise.protocol.CipherStatePair
|
|||
import com.futo.platformplayer.noise.protocol.HandshakeState
|
||||
import com.futo.platformplayer.noise.protocol.Noise
|
||||
import com.futo.platformplayer.states.StateSync
|
||||
import com.futo.platformplayer.sync.IAuthorizable
|
||||
import com.futo.platformplayer.sync.SyncSocketSession
|
||||
import com.futo.platformplayer.sync.SyncStream
|
||||
import com.futo.platformplayer.sync.internal.IAuthorizable
|
||||
import com.futo.platformplayer.sync.internal.SyncSocketSession
|
||||
import com.futo.platformplayer.sync.internal.SyncStream
|
||||
import junit.framework.TestCase.assertEquals
|
||||
import org.junit.Assert.assertArrayEquals
|
||||
import org.junit.Test
|
||||
|
@ -24,7 +24,6 @@ import java.util.Base64
|
|||
import java.util.Random
|
||||
import java.util.concurrent.CountDownLatch
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.math.exp
|
||||
|
||||
|
||||
class NoiseProtocolTest {
|
||||
|
|
Loading…
Add table
Reference in a new issue