mirror of
https://github.com/rhunk/SnapEnhance.git
synced 2025-06-12 21:27:47 +02:00
feat(native): native grpc unaryCall hook
This commit is contained in:
@ -1,11 +1,29 @@
|
||||
package me.rhunk.snapenhance.nativelib
|
||||
|
||||
import android.util.Log
|
||||
|
||||
class NativeLib {
|
||||
var nativeUnaryCallCallback: (NativeRequestData) -> Unit = {}
|
||||
|
||||
fun initOnce(classloader: ClassLoader) {
|
||||
System.loadLibrary("nativelib")
|
||||
init(classloader)
|
||||
}
|
||||
|
||||
@Suppress("unused")
|
||||
private fun onNativeUnaryCall(uri: String, buffer: ByteArray): NativeRequestData? {
|
||||
Log.d("SnapEnhance", "onNativeUnaryCall: uri=$uri, bufferSize=${buffer.size}, buffer=${buffer.contentToString()}")
|
||||
val nativeRequestData = NativeRequestData(uri, buffer)
|
||||
runCatching {
|
||||
nativeUnaryCallCallback(nativeRequestData)
|
||||
}.onFailure {
|
||||
Log.e("SnapEnhance", "nativeUnaryCallCallback failed", it)
|
||||
}
|
||||
if (!nativeRequestData.buffer.contentEquals(buffer) || nativeRequestData.canceled) return nativeRequestData
|
||||
return null
|
||||
}
|
||||
|
||||
|
||||
external fun init(classLoader: ClassLoader)
|
||||
external fun loadConfig(config: NativeConfig)
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package me.rhunk.snapenhance.nativelib
|
||||
|
||||
data class NativeRequestData(
|
||||
val uri: String,
|
||||
var buffer: ByteArray,
|
||||
var canceled: Boolean = false,
|
||||
)
|
Reference in New Issue
Block a user