[6.2.4][Feat]新增QUIC请求延时回调和协议开关
This commit is contained in:
@@ -407,4 +407,8 @@ class DevaToolsProvider : IDevaToolsProvider {
|
||||
override fun block(): IMoGoBlockProvider? = block
|
||||
|
||||
override fun usage(): IMoGoCpuUsageProvider? = usage
|
||||
|
||||
override fun setNetworkMode(isDebug: Boolean) {
|
||||
WeakNetworkStrategy.setDebug(isDebug)
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@ object WeakNetworkStrategy {
|
||||
private const val TAG = "WeakNetworkStrategy"
|
||||
|
||||
// 记录到链路日志中的时间间隔
|
||||
private const val OUTPUT_TIME_INTERVAL = 15000
|
||||
private const val OUTPUT_TIME_INTERVAL = 2500
|
||||
|
||||
private const val WEAK_HTTP_RTT = 1300
|
||||
|
||||
@@ -23,6 +23,8 @@ object WeakNetworkStrategy {
|
||||
|
||||
private var lastOutputTime = 0L
|
||||
|
||||
private var isDebug = false
|
||||
|
||||
private val lock by lazy {
|
||||
ReentrantReadWriteLock()
|
||||
}
|
||||
@@ -53,6 +55,10 @@ object WeakNetworkStrategy {
|
||||
})
|
||||
}
|
||||
|
||||
fun setDebug(isDebug: Boolean) {
|
||||
this.isDebug = isDebug
|
||||
}
|
||||
|
||||
fun stopListen() {
|
||||
setListener(null)
|
||||
}
|
||||
@@ -63,10 +69,13 @@ object WeakNetworkStrategy {
|
||||
try {
|
||||
val currentTime = System.currentTimeMillis()
|
||||
if (currentTime - lastOutputTime > OUTPUT_TIME_INTERVAL) {
|
||||
if (isDebug) {
|
||||
invokeWeakResult("url为:$url, 耗时为:$timeStamp${if (isFail) " 连接失败!" else ""}")
|
||||
}
|
||||
if (timeStamp >= WEAK_HTTP_RTT) {
|
||||
ToastUtils.showShort("当前网络质量差!")
|
||||
} else if (timeStamp in 300 until WEAK_HTTP_RTT) {
|
||||
invokeWeakResult("url为:$url, 耗时为:$timeStamp${if (isFail) " 连接失败!" else ""}")
|
||||
// invokeWeakResult("url为:$url, 耗时为:$timeStamp${if (isFail) " 连接失败!" else ""}")
|
||||
SdtManager.startActiveCheck()
|
||||
}
|
||||
lastOutputTime = currentTime
|
||||
|
||||
@@ -11,6 +11,7 @@ import android.os.Build
|
||||
import android.os.Process
|
||||
import android.text.Html
|
||||
import android.util.AttributeSet
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.annotation.RequiresApi
|
||||
@@ -21,6 +22,7 @@ import androidx.core.view.MenuCompat
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import chassis.Chassis
|
||||
import com.mogo.cloud.network.cronet.NetworkQualityListener
|
||||
import com.mogo.cloud.network.cronet.QuicConfig
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClient
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
@@ -86,6 +88,7 @@ import com.mogo.eagle.core.utilcode.util.*
|
||||
import com.mogo.map.MogoData.Companion.mogoMapData
|
||||
import com.mogo.map.uicontroller.VisualAngleMode
|
||||
import com.mogo.map.uicontroller.VisualAngleMode.*
|
||||
import com.zhjt.service.chain.ChainLog
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.*
|
||||
import kotlinx.coroutines.*
|
||||
import mogo.telematics.pad.MessagePad
|
||||
@@ -773,7 +776,35 @@ internal class DebugSettingView @JvmOverloads constructor(
|
||||
FunctionBuildConfig.isObuWarningFusionUnion = isChecked
|
||||
}
|
||||
tbCronet.setOnCheckedChangeListener { _, isChecked ->
|
||||
if (!isChecked) {
|
||||
CallerDevaToolsManager.setNetworkMode(true)
|
||||
}
|
||||
QuicConfig.setEnable(context, isChecked)
|
||||
QuicConfig.setNetworkListener(object : NetworkQualityListener {
|
||||
override fun onLatencyObservation(rttMs: Int, url: String?) {
|
||||
invokeCronetResult("****** Cronet Request Completed, the latency is $rttMs ms;url is $url")
|
||||
}
|
||||
|
||||
override fun onFailed(error: String?, url: String?) {
|
||||
invokeCronetResult("****** Cronet Request onFailed, error is $error;url is $url")
|
||||
}
|
||||
|
||||
override fun onCanceled(url: String?) {
|
||||
invokeCronetResult("****** Cronet Request onFailed, url is: $url")
|
||||
}
|
||||
|
||||
override fun onRttObservation(rttMs: Int, whenMs: Long, source: Int) {
|
||||
invokeCronetResult("rttMs is:$rttMs ms,source is:$source")
|
||||
}
|
||||
|
||||
override fun onThroughputObservation(
|
||||
throughputKbps: Int,
|
||||
whenMs: Long,
|
||||
source: Int
|
||||
) {
|
||||
invokeCronetResult("downstream throughput is:$throughputKbps,source is:$source")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
//重启工控机所有节点
|
||||
@@ -2310,4 +2341,13 @@ internal class DebugSettingView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
@ChainLog(
|
||||
linkChainLog = ChainConstant.CHAIN_TYPE_WEAK_NETWORK,
|
||||
linkCode = ChainConstant.CHAIN_SOURCE_WEAK_NETWORK,
|
||||
nodeAliasCode = ChainConstant.CHAIN_CODE_RECORD_WEAK_NETWORK,
|
||||
paramIndexes = [0]
|
||||
)
|
||||
private fun invokeCronetResult(json: String) {
|
||||
Log.d("CronetNetwork", json)
|
||||
}
|
||||
}
|
||||
@@ -2372,7 +2372,7 @@
|
||||
android:padding="@dimen/dp_20"
|
||||
android:background="@drawable/radio_button_normal_background_right"
|
||||
android:textColor="#000"
|
||||
android:textOff="开启QUIC协议(服务器暂不支持)"
|
||||
android:textOff="开启QUIC协议(目前QA环境可用)"
|
||||
android:textOn="关闭QUIC协议"
|
||||
android:textSize="@dimen/dp_24" />
|
||||
</LinearLayout>
|
||||
|
||||
Reference in New Issue
Block a user