[V2X]添加新的长链类型

[V2X]添加新的长链类型
This commit is contained in:
renwj
2022-06-10 17:52:56 +08:00
parent d64a627bce
commit 181886f2de
10 changed files with 163 additions and 24 deletions

View File

@@ -4,6 +4,7 @@ package com.mogo.cloud.socket;
import static com.mogo.cloud.socket.SocketServicesConstants.getTag;
import android.content.Context;
import android.util.Log;
import androidx.annotation.NonNull;
@@ -11,6 +12,8 @@ import com.elegant.log.simplelog.Logger;
import com.elegant.network.utils.GsonUtil;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.Message;
import com.google.protobuf.MessageOrBuilder;
import com.mogo.cloud.passport.MoGoAiCloudClient;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.cloud.socket.entity.MsgBody;
@@ -20,6 +23,7 @@ import com.mogo.cloud.socket.third.ThirdSocketManager;
import com.zhidao.ptech.connsvr.protocol.MogoConnsvr;
import com.zhidao.socket.ConnectionLifecycleListener;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -35,6 +39,8 @@ public class SocketManager implements IMogoCloudSocketManager {
private static volatile SocketManager mInstance;
private MoGoAiCloudClientConfig cloudClientConfig;
private static final String TAG = "SocketManager";
private SocketManager() {
cloudClientConfig = MoGoAiCloudClient.getInstance().getAiCloudClientConfig();
}
@@ -160,15 +166,25 @@ public class SocketManager implements IMogoCloudSocketManager {
IMogoCloudSocketOnMessageListener listener = iterator.next();
if (payload.getPayload() != null) {
Class clz = listener.target(msgType);
if ("SocketDownDataProto".equals(clz.getSimpleName())) {
obj = SocketDownData.SocketDownDataProto.parseFrom(payload.getPayload());
if (MessageOrBuilder.class.isAssignableFrom(clz)) {
try {
Constructor c = clz.getDeclaredConstructor(Void.class);
if (c != null) {
c.setAccessible(true);
MessageOrBuilder o = (MessageOrBuilder)c.newInstance();
o.getDefaultInstanceForType().getParserForType().parseFrom(payload.getPayload());
obj = o;
}
} catch (Throwable t) {
Log.e(TAG, Log.getStackTraceString(t));
}
} else {
obj = GsonUtil.objectFromJson(payload.getPayload().toStringUtf8(), listener.target(msgType));
}
}
if (listener != null) {
if (listener != null && obj != null) {
if (SocketBuildConfig.isPrintLog) {
Logger.d(getTag(), "received msgId = %s, content = %s", msgId, payload.getPayload().toStringUtf8());
Logger.d(getTag(), "received msgId = %s, msgType = %d, content = %s", msgId, msgType, obj);
}
listener.onMsgReceived(msgType, obj);
}