mirror of
https://github.com/yggdrasil-network/yggdrasil-android.git
synced 2025-04-27 21:55:08 +03:00
Optimized packet buffers. (#26)
This commit is contained in:
parent
aa725fbf8f
commit
8615d43761
1 changed files with 6 additions and 7 deletions
|
@ -1,16 +1,12 @@
|
||||||
package eu.neilalexander.yggdrasil
|
package eu.neilalexander.yggdrasil
|
||||||
|
|
||||||
import android.content.*
|
import android.content.*
|
||||||
import android.net.Uri
|
|
||||||
import android.net.VpnService
|
import android.net.VpnService
|
||||||
import android.os.Handler
|
|
||||||
import android.os.Message
|
|
||||||
import android.os.ParcelFileDescriptor
|
import android.os.ParcelFileDescriptor
|
||||||
import android.system.OsConstants
|
import android.system.OsConstants
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
import mobile.Yggdrasil
|
import mobile.Yggdrasil
|
||||||
import org.json.JSONArray
|
|
||||||
import java.io.FileInputStream
|
import java.io.FileInputStream
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
import java.util.concurrent.atomic.AtomicBoolean
|
import java.util.concurrent.atomic.AtomicBoolean
|
||||||
|
@ -208,6 +204,7 @@ class PacketTunnelProvider: VpnService() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun writer() {
|
private fun writer() {
|
||||||
|
val buf = ByteArray(65535)
|
||||||
writes@ while (started.get()) {
|
writes@ while (started.get()) {
|
||||||
val writerStream = writerStream
|
val writerStream = writerStream
|
||||||
val writerThread = writerThread
|
val writerThread = writerThread
|
||||||
|
@ -218,8 +215,10 @@ class PacketTunnelProvider: VpnService() {
|
||||||
break@writes
|
break@writes
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
val b = yggdrasil.recv()
|
val len = yggdrasil.recvBuffer(buf)
|
||||||
writerStream.write(b)
|
if (len > 0) {
|
||||||
|
writerStream.write(buf, 0, len.toInt())
|
||||||
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
break@writes
|
break@writes
|
||||||
}
|
}
|
||||||
|
@ -243,7 +242,7 @@ class PacketTunnelProvider: VpnService() {
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
val n = readerStream.read(b)
|
val n = readerStream.read(b)
|
||||||
yggdrasil.send(b.sliceArray(0..n))
|
yggdrasil.sendBuffer(b, n.toLong())
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
break@reads
|
break@reads
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue