mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-10-03 05:20:50 +00:00
fix[cpp]: cpp serialization
This commit is contained in:
1 parent
cbc2f1e900
commit
e70289b1e9
3 files changed
+9
-4
No files matched your search
@@ -113,6 +113,10 @@ public class ProtocolManager {
|
||||
return protocolIdMap == null ? protocolIdPrimitiveMap.getPrimitive(clazz.hashCode()) : protocolIdMap.get(clazz);
|
||||
}
|
||||
|
||||
public static boolean isProtocolClass(Class<?> clazz) {
|
||||
return protocolIdMap == null ? protocolIdPrimitiveMap.containsKey(clazz.hashCode()) : protocolIdMap.containsKey(clazz);
|
||||
}
|
||||
|
||||
public static void initProtocol(Set<Class<?>> protocolClassSet) {
|
||||
ProtocolAnalysis.analyze(protocolClassSet, GenerateOperation.NO_OPERATION);
|
||||
}
|
||||
|
||||
+2
-1
@@ -13,6 +13,7 @@
|
||||
|
||||
package com.zfoo.protocol.serializer.cpp;
|
||||
|
||||
import com.zfoo.protocol.ProtocolManager;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Pair;
|
||||
import com.zfoo.protocol.registration.field.IFieldRegistration;
|
||||
@@ -43,7 +44,7 @@ public class CppObjectProtocolSerializer implements ICppSerializer {
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
ObjectProtocolField objectProtocolField = (ObjectProtocolField) fieldRegistration;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
if (Object.class.isAssignableFrom(field.getType())) {
|
||||
if (ProtocolManager.isProtocolClass(field.getType())) {
|
||||
builder.append(StringUtils.format("buffer.writePacket({}, {});", objectStr, objectProtocolField.getProtocolId()))
|
||||
.append(LS);
|
||||
} else {
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
package com.zfoo.protocol.serializer.cpp;
|
||||
|
||||
import com.zfoo.protocol.ProtocolManager;
|
||||
import com.zfoo.protocol.anno.Compatible;
|
||||
import com.zfoo.protocol.collection.CollectionUtils;
|
||||
import com.zfoo.protocol.generate.GenerateOperation;
|
||||
@@ -249,7 +250,7 @@ public abstract class GenerateCppUtils {
|
||||
var field = fields[i];
|
||||
var fieldRegistration = fieldRegistrations[i];
|
||||
var serializer = cppSerializer(fieldRegistration.serializer());
|
||||
if (Object.class.isAssignableFrom(field.getType())) {
|
||||
if (ProtocolManager.isProtocolClass(field.getType())) {
|
||||
serializer.writeObject(cppBuilder, "&message->" + field.getName(), 3, field, fieldRegistration);
|
||||
} else {
|
||||
serializer.writeObject(cppBuilder, "message->" + field.getName(), 3, field, fieldRegistration);
|
||||
@@ -274,7 +275,7 @@ public abstract class GenerateCppUtils {
|
||||
|
||||
var readObject = cppSerializer(fieldRegistration.serializer()).readObject(cppBuilder, 3, field, fieldRegistration);
|
||||
cppBuilder.append(TAB + TAB + TAB);
|
||||
if (Object.class.isAssignableFrom(field.getType())) {
|
||||
if (ProtocolManager.isProtocolClass(field.getType())) {
|
||||
cppBuilder.append(StringUtils.format("packet->{} = *{};", field.getName(), readObject));
|
||||
} else {
|
||||
cppBuilder.append(StringUtils.format("packet->{} = {};", field.getName(), readObject));
|
||||
@@ -285,7 +286,6 @@ public abstract class GenerateCppUtils {
|
||||
return cppBuilder.toString();
|
||||
}
|
||||
|
||||
|
||||
public static String toCppClassName(String typeName) {
|
||||
typeName = typeName.replaceAll("java.util.|java.lang.", StringUtils.EMPTY);
|
||||
typeName = typeName.replaceAll("[a-zA-Z0-9_.]*\\.", StringUtils.EMPTY);
|
||||
|
||||
Reference in new issue
Block a user