mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-10-13 22:16:32 +00:00
fix[enhance]: compatible filed enhance serialization error
This commit is contained in:
1 parent
62e6184cbd
commit
0f099de567
2 files changed
+12
-4
No files matched your search
@@ -219,12 +219,13 @@ public abstract class EnhanceUtils {
|
||||
for (var i = 0; i < fields.length; i++) {
|
||||
var field = fields[i];
|
||||
var fieldRegistration = fieldRegistrations[i];
|
||||
var readObject = enhanceSerializer(fieldRegistration.serializer()).readObject(builder, field, fieldRegistration);
|
||||
// 协议向后兼容
|
||||
// protocol backwards compatibility,协议向后兼容
|
||||
if (field.isAnnotationPresent(Compatible.class)) {
|
||||
builder.append("if(!$1.isReadable()){ return packet; }");
|
||||
}
|
||||
|
||||
var readObject = enhanceSerializer(fieldRegistration.serializer()).readObject(builder, field, fieldRegistration);
|
||||
|
||||
if (Modifier.isPublic(field.getModifiers())) {
|
||||
builder.append(StringUtils.format("packet.{}={};", field.getName(), readObject));
|
||||
} else {
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
package com.zfoo.protocol.compatiblity;
|
||||
|
||||
import com.zfoo.protocol.ProtocolManager;
|
||||
import com.zfoo.protocol.generate.GenerateOperation;
|
||||
import com.zfoo.protocol.packet.*;
|
||||
import com.zfoo.protocol.util.ClassUtils;
|
||||
import com.zfoo.protocol.util.IOUtils;
|
||||
import io.netty.buffer.ByteBufAllocator;
|
||||
@@ -21,6 +23,7 @@ import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import static com.zfoo.protocol.SpeedTest.complexObject;
|
||||
import static com.zfoo.protocol.SpeedTest.normalObject;
|
||||
@@ -31,12 +34,16 @@ import static com.zfoo.protocol.SpeedTest.normalObject;
|
||||
public class CompatiblityTest {
|
||||
|
||||
/**
|
||||
* 字节码增强的Map变量顺序会出现不一样,所以序列化的内容顺序会改变,关闭字节码增强就会发现序列化内容相同
|
||||
* @throws IOException
|
||||
* EN: The order of the bytecode-enhanced Map traversal order will be different, so the order of the serialized content will change.
|
||||
* You can see that the different ones are not consecutive.
|
||||
* <p>
|
||||
* CN: 字节码增强的Map遍历顺序会出现不一样,所以序列化的内容顺序会改变,可以看到不相同的直接并不是连续的
|
||||
*/
|
||||
@Ignore
|
||||
@Test
|
||||
public void compatiblityTest() throws IOException {
|
||||
ProtocolManager.initProtocolAuto(Set.of(ComplexObject.class, NormalObject.class, SimpleObject.class, EmptyObject.class, VeryBigObject.class), GenerateOperation.NO_OPERATION);
|
||||
|
||||
var bytes = IOUtils.toByteArray(ClassUtils.getFileFromClassPath("ComplexObject.bytes"));
|
||||
var buffer = new UnpooledHeapByteBuf(ByteBufAllocator.DEFAULT, 100, 1_0000);
|
||||
buffer.writeBytes(bytes);
|
||||
|
||||
Reference in new issue
Block a user