mirror of
https://gitlab.futo.org/videostreaming/grayjay.git
synced 2025-08-03 14:50:49 +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.setNavigationBarColorAndIcons
|
||||||
import com.futo.platformplayer.states.StateApp
|
import com.futo.platformplayer.states.StateApp
|
||||||
import com.futo.platformplayer.states.StateSync
|
import com.futo.platformplayer.states.StateSync
|
||||||
import com.futo.platformplayer.sync.LinkType
|
import com.futo.platformplayer.sync.internal.LinkType
|
||||||
import com.futo.platformplayer.sync.SyncSession
|
import com.futo.platformplayer.sync.internal.SyncSession
|
||||||
import com.futo.platformplayer.views.sync.SyncDeviceView
|
import com.futo.platformplayer.views.sync.SyncDeviceView
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.futo.platformplayer.activities
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Base64
|
import android.util.Base64
|
||||||
import android.util.Log
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.EditText
|
import android.widget.EditText
|
||||||
import android.widget.ImageButton
|
import android.widget.ImageButton
|
||||||
|
@ -17,17 +16,12 @@ import com.futo.platformplayer.logging.Logger
|
||||||
import com.futo.platformplayer.setNavigationBarColorAndIcons
|
import com.futo.platformplayer.setNavigationBarColorAndIcons
|
||||||
import com.futo.platformplayer.states.StateApp
|
import com.futo.platformplayer.states.StateApp
|
||||||
import com.futo.platformplayer.states.StateSync
|
import com.futo.platformplayer.states.StateSync
|
||||||
import com.futo.platformplayer.sync.SyncDeviceInfo
|
import com.futo.platformplayer.sync.internal.SyncDeviceInfo
|
||||||
import com.futo.platformplayer.sync.SyncSocketSession
|
|
||||||
import com.google.zxing.integration.android.IntentIntegrator
|
import com.google.zxing.integration.android.IntentIntegrator
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.delay
|
|
||||||
import kotlinx.coroutines.isActive
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import java.nio.ByteBuffer
|
|
||||||
import java.util.Random
|
|
||||||
|
|
||||||
class SyncPairActivity : AppCompatActivity() {
|
class SyncPairActivity : AppCompatActivity() {
|
||||||
private lateinit var _editCode: EditText
|
private lateinit var _editCode: EditText
|
||||||
|
|
|
@ -7,7 +7,6 @@ import android.graphics.Bitmap
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Base64
|
import android.util.Base64
|
||||||
import android.util.Log
|
|
||||||
import android.util.TypedValue
|
import android.util.TypedValue
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.ImageButton
|
import android.widget.ImageButton
|
||||||
|
@ -21,7 +20,7 @@ import com.futo.platformplayer.logging.Logger
|
||||||
import com.futo.platformplayer.setNavigationBarColorAndIcons
|
import com.futo.platformplayer.setNavigationBarColorAndIcons
|
||||||
import com.futo.platformplayer.states.StateApp
|
import com.futo.platformplayer.states.StateApp
|
||||||
import com.futo.platformplayer.states.StateSync
|
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.BarcodeFormat
|
||||||
import com.google.zxing.MultiFormatWriter
|
import com.google.zxing.MultiFormatWriter
|
||||||
import com.google.zxing.common.BitMatrix
|
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.StringStringMapStorage
|
||||||
import com.futo.platformplayer.stores.StringArrayStorage
|
import com.futo.platformplayer.stores.StringArrayStorage
|
||||||
import com.futo.platformplayer.stores.StringStorage
|
import com.futo.platformplayer.stores.StringStorage
|
||||||
import com.futo.platformplayer.sync.SyncDeviceInfo
|
import com.futo.platformplayer.sync.internal.SyncDeviceInfo
|
||||||
import com.futo.platformplayer.sync.SyncKeyPair
|
import com.futo.platformplayer.sync.internal.SyncKeyPair
|
||||||
import com.futo.platformplayer.sync.SyncSession
|
import com.futo.platformplayer.sync.internal.SyncSession
|
||||||
import com.futo.platformplayer.sync.SyncSocketSession
|
import com.futo.platformplayer.sync.internal.SyncSocketSession
|
||||||
import com.futo.polycentric.core.base64ToByteArray
|
import com.futo.polycentric.core.base64ToByteArray
|
||||||
import com.futo.polycentric.core.toBase64
|
import com.futo.polycentric.core.toBase64
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package com.futo.platformplayer.sync;
|
package com.futo.platformplayer.sync.internal;
|
||||||
|
|
||||||
public enum LinkType {
|
public enum LinkType {
|
||||||
None,
|
None,
|
|
@ -1,4 +1,4 @@
|
||||||
package com.futo.platformplayer.sync
|
package com.futo.platformplayer.sync.internal
|
||||||
|
|
||||||
@kotlinx.serialization.Serializable
|
@kotlinx.serialization.Serializable
|
||||||
class SyncDeviceInfo {
|
class SyncDeviceInfo {
|
|
@ -1,4 +1,4 @@
|
||||||
package com.futo.platformplayer.sync
|
package com.futo.platformplayer.sync.internal
|
||||||
|
|
||||||
@kotlinx.serialization.Serializable
|
@kotlinx.serialization.Serializable
|
||||||
class SyncKeyPair {
|
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.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
|
import java.nio.ByteBuffer
|
||||||
|
|
||||||
interface IAuthorizable {
|
interface IAuthorizable {
|
||||||
|
@ -110,6 +116,19 @@ class SyncSession : IAuthorizable {
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger.i(TAG, "Received ${opcode} (${data.remaining()} bytes)")
|
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 {
|
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.LittleEndianDataInputStream
|
||||||
import com.futo.platformplayer.LittleEndianDataOutputStream
|
import com.futo.platformplayer.LittleEndianDataOutputStream
|
||||||
|
@ -95,7 +95,7 @@ class SyncSocketSession {
|
||||||
try {
|
try {
|
||||||
val messageSize = _inputStream.readInt()
|
val messageSize = _inputStream.readInt()
|
||||||
if (messageSize > MAXIMUM_PACKET_SIZE_ENCRYPTED) {
|
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})")
|
//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) {
|
class SyncStream(expectedSize: Int, val opcode: UByte) {
|
||||||
companion object {
|
companion object {
|
|
@ -9,7 +9,7 @@ import android.widget.TextView
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout
|
import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
import com.futo.platformplayer.R
|
import com.futo.platformplayer.R
|
||||||
import com.futo.platformplayer.constructs.Event0
|
import com.futo.platformplayer.constructs.Event0
|
||||||
import com.futo.platformplayer.sync.LinkType
|
import com.futo.platformplayer.sync.internal.LinkType
|
||||||
|
|
||||||
class SyncDeviceView : ConstraintLayout {
|
class SyncDeviceView : ConstraintLayout {
|
||||||
val _imageLinkType: ImageView
|
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.HandshakeState
|
||||||
import com.futo.platformplayer.noise.protocol.Noise
|
import com.futo.platformplayer.noise.protocol.Noise
|
||||||
import com.futo.platformplayer.states.StateSync
|
import com.futo.platformplayer.states.StateSync
|
||||||
import com.futo.platformplayer.sync.IAuthorizable
|
import com.futo.platformplayer.sync.internal.IAuthorizable
|
||||||
import com.futo.platformplayer.sync.SyncSocketSession
|
import com.futo.platformplayer.sync.internal.SyncSocketSession
|
||||||
import com.futo.platformplayer.sync.SyncStream
|
import com.futo.platformplayer.sync.internal.SyncStream
|
||||||
import junit.framework.TestCase.assertEquals
|
import junit.framework.TestCase.assertEquals
|
||||||
import org.junit.Assert.assertArrayEquals
|
import org.junit.Assert.assertArrayEquals
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
@ -24,7 +24,6 @@ import java.util.Base64
|
||||||
import java.util.Random
|
import java.util.Random
|
||||||
import java.util.concurrent.CountDownLatch
|
import java.util.concurrent.CountDownLatch
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import kotlin.math.exp
|
|
||||||
|
|
||||||
|
|
||||||
class NoiseProtocolTest {
|
class NoiseProtocolTest {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue