mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-10-16 10:15:28 +00:00
feat[csharp]: csharp support compatible field
This commit is contained in:
1 parent
cdff688147
commit
170d5ef904
2 files changed
+15
-4
No files matched your search
@@ -189,11 +189,20 @@ public abstract class GenerateCsUtils {
|
|||||||
var fields = registration.getFields();
|
var fields = registration.getFields();
|
||||||
var fieldRegistrations = registration.getFieldRegistrations();
|
var fieldRegistrations = registration.getFieldRegistrations();
|
||||||
var csBuilder = new StringBuilder();
|
var csBuilder = new StringBuilder();
|
||||||
|
if (registration.isCompatible()) {
|
||||||
|
csBuilder.append("int beforeWriteIndex = buffer.WriteOffset();").append(LS);
|
||||||
|
csBuilder.append(TAB + TAB + TAB).append(StringUtils.format("buffer.WriteInt({});", registration.getPredictionLength())).append(LS);
|
||||||
|
} else {
|
||||||
|
csBuilder.append(TAB + TAB + TAB).append("buffer.WriteInt(-1);").append(LS);
|
||||||
|
}
|
||||||
for (var i = 0; i < fields.length; i++) {
|
for (var i = 0; i < fields.length; i++) {
|
||||||
var field = fields[i];
|
var field = fields[i];
|
||||||
var fieldRegistration = fieldRegistrations[i];
|
var fieldRegistration = fieldRegistrations[i];
|
||||||
csSerializer(fieldRegistration.serializer()).writeObject(csBuilder, "message." + field.getName(), 3, field, fieldRegistration);
|
csSerializer(fieldRegistration.serializer()).writeObject(csBuilder, "message." + field.getName(), 3, field, fieldRegistration);
|
||||||
}
|
}
|
||||||
|
if (registration.isCompatible()) {
|
||||||
|
csBuilder.append(TAB + TAB + TAB).append(StringUtils.format("buffer.AdjustPadding({}, beforeWriteIndex);", registration.getPredictionLength())).append(LS);
|
||||||
|
}
|
||||||
return csBuilder.toString();
|
return csBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,11 +214,13 @@ public abstract class GenerateCsUtils {
|
|||||||
for (var i = 0; i < fields.length; i++) {
|
for (var i = 0; i < fields.length; i++) {
|
||||||
var field = fields[i];
|
var field = fields[i];
|
||||||
var fieldRegistration = fieldRegistrations[i];
|
var fieldRegistration = fieldRegistrations[i];
|
||||||
|
|
||||||
if (field.isAnnotationPresent(Compatible.class)) {
|
if (field.isAnnotationPresent(Compatible.class)) {
|
||||||
csBuilder.append(TAB + TAB + TAB).append("if (!buffer.IsReadable())").append(LS);
|
csBuilder.append(TAB + TAB + TAB).append("if (buffer.CompatibleRead(beforeReadIndex, length)) {").append(LS);
|
||||||
csBuilder.append(TAB + TAB + TAB).append("{").append(LS);
|
var compatibleReadObject = csSerializer(fieldRegistration.serializer()).readObject(csBuilder, 4, field, fieldRegistration);
|
||||||
csBuilder.append(TAB + TAB + TAB + TAB).append("return packet;").append(LS);
|
csBuilder.append(TAB + TAB + TAB + TAB).append(StringUtils.format("packet.{} = {};", field.getName(), compatibleReadObject)).append(LS);
|
||||||
csBuilder.append(TAB + TAB + TAB).append("}").append(LS);
|
csBuilder.append(TAB + TAB + TAB).append("}").append(LS);
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
var readObject = csSerializer(fieldRegistration.serializer()).readObject(csBuilder, 3, field, fieldRegistration);
|
var readObject = csSerializer(fieldRegistration.serializer()).readObject(csBuilder, 3, field, fieldRegistration);
|
||||||
csBuilder.append(TAB + TAB + TAB).append(StringUtils.format("packet.{} = {};", field.getName(), readObject)).append(LS);
|
csBuilder.append(TAB + TAB + TAB).append(StringUtils.format("packet.{} = {};", field.getName(), readObject)).append(LS);
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace zfoocs
|
|||||||
|
|
||||||
public static void Write(ByteBuffer buffer, object packet)
|
public static void Write(ByteBuffer buffer, object packet)
|
||||||
{
|
{
|
||||||
var protocolId = packet.ProtocolId();
|
var protocolId = protocolIdMap[packet.GetType()];
|
||||||
// 写入协议号
|
// 写入协议号
|
||||||
buffer.WriteShort(protocolId);
|
buffer.WriteShort(protocolId);
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user