[Update]Netty支持多channel通信和业务身份绑定

This commit is contained in:
chenfufeng
2022-02-18 18:03:27 +08:00
parent 94440566d7
commit 468c21bce8
2 changed files with 36 additions and 32 deletions

View File

@@ -4,6 +4,7 @@ import android.Manifest.permission
import android.content.Context
import androidx.annotation.RequiresPermission
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.autopilot.AutopilotControlCmdParameter
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
import com.mogo.eagle.core.data.config.FunctionBuildConfig
@@ -20,6 +21,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.telematic.MogoProtocolMsg
import com.mogo.telematic.MogoProtocolMsg.NORMAL_DATA
import com.mogo.telematic.NSDNettyManager
@@ -67,23 +69,21 @@ class MoGoAutopilotProvider :
val options = AdasOptions.Builder().setClient(false).build()
AdasManager.getInstance().create(context, options)
NSDNettyManager.getInstance().startNSDNettyServer(context, object : NettyServerListener<MogoProtocolMsg> {
override fun onMessageResponseServer(
msg: MogoProtocolMsg?,
ChannelId: String?
) {
override fun onMessageResponseServer(msg: MogoProtocolMsg?, channel: Channel?) {
Logger.d(TAG, "Receive client data is:${msg?.toString()}")
}
override fun onStartServer() {
ToastUtils.showShort("司机端服务启动成功!")
Logger.d(TAG, "onStartServer")
}
override fun onStopServer() {
ToastUtils.showLong("司机端服务停止!")
Logger.d(TAG, "onStopServer")
}
override fun onChannelConnect(channel: Channel?) {
// TODO:("暂时保存一个Client的channel后面管理多个Client的channel")
NSDNettyManager.getInstance().selectChannel(channel)
val socketAddress = channel?.remoteAddress().toString()
Logger.d(TAG, "Client ip is:${socketAddress}")
@@ -102,8 +102,8 @@ class MoGoAutopilotProvider :
// "192.168.1.102"
val options = AdasOptions.Builder().build()
AdasManager.getInstance().create(context, options)
NSDNettyManager.getInstance().searchAndConnectServer(context, object : NettyClientListener<MogoProtocolMsg> {
override fun onMessageResponseClient(msg: MogoProtocolMsg?, index: Int) {
NSDNettyManager.getInstance().searchAndConnectServer(context, MoGoAiCloudClientConfig.getInstance().sn, object : NettyClientListener<MogoProtocolMsg> {
override fun onMessageResponseClient(msg: MogoProtocolMsg?, sign: String?) {
Logger.d(TAG, "收到司机端的数据!")
// 乘客端收到adas数据直接解析后续分发解析后的数据流程同司机端
msg?.let {
@@ -112,10 +112,13 @@ class MoGoAutopilotProvider :
}
}
override fun onClientStatusConnectChanged(statusCode: Int, index: Int) {
override fun onClientStatusConnectChanged(statusCode: Int, sign: String?) {
when (statusCode) {
ConnectState.STATUS_CONNECT_SUCCESS -> Logger.d(TAG, "乘客端连接司机端服务成功! index is:${index}")
else -> Logger.d(TAG, "client statusCode is:${statusCode}")
ConnectState.STATUS_CONNECT_SUCCESS -> Logger.d(TAG, "乘客端连接司机端服务成功! sign is:${sign}")
else -> {
ToastUtils.showLong("和司机端连接异常!")
Logger.d(TAG, "client statusCode is:${statusCode}")
}
}
}
})
@@ -145,19 +148,20 @@ class MoGoAutopilotProvider :
TAG,
"司机端透传数据给乘客端!"
)
NSDNettyManager.getInstance().sendMogoProtocolMsgToClient(MogoProtocolMsg(NORMAL_DATA, bytes.size, bytes)) { channelFuture: ChannelFuture ->
if (channelFuture.isSuccess) {
Logger.d(
TAG,
"Send data to client is success."
)
} else {
Logger.d(
TAG,
"Send data to client is failure."
)
}
}
NSDNettyManager.getInstance().sendMsgToAllClients(MogoProtocolMsg(NORMAL_DATA, bytes.size, bytes))
// NSDNettyManager.getInstance().sendMogoProtocolMsgToClient(MogoProtocolMsg(NORMAL_DATA, bytes.size, bytes)) { channelFuture: ChannelFuture ->
// if (channelFuture.isSuccess) {
// Logger.d(
// TAG,
// "Send data to client is success."
// )
// } else {
// Logger.d(
// TAG,
// "Send data to client is failure."
// )
// }
// }
} else {
Logger.d(TAG, "司机端Server未启动")
}