perf[protocol]: ruby code style

This commit is contained in:
godotg committed 2024-07-24 17:29:47 +08:00
1 parent 7f67827a3f
commit beebb39842
19 files changed
+1134 -1130

No files matched your search

@@ -27,8 +27,7 @@ import java.lang.reflect.Field;
import java.util.*; import java.util.*;
import java.util.function.Predicate; import java.util.function.Predicate;
import static com.zfoo.protocol.util.StringUtils.TAB; import static com.zfoo.protocol.util.StringUtils.*;
import static com.zfoo.protocol.util.StringUtils.TAB_ASCII;
/** /**
* @author godotg * @author godotg
@@ -48,6 +47,11 @@ public abstract class GenerateProtocolFile {
return builder; return builder;
} }
public static StringBuilder addTabWith2Space(StringBuilder builder, int deep) {
builder.append(SPACE.repeat(Math.max(0, deep * 2)));
return builder;
}
public static StringBuilder addTabAscii(StringBuilder builder, int deep) { public static StringBuilder addTabAscii(StringBuilder builder, int deep) {
builder.append(TAB_ASCII.repeat(Math.max(0, deep))); builder.append(TAB_ASCII.repeat(Math.max(0, deep)));
return builder; return builder;
@@ -38,7 +38,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import static com.zfoo.protocol.util.FileUtils.LS; import static com.zfoo.protocol.util.FileUtils.LS;
import static com.zfoo.protocol.util.StringUtils.TAB;
/** /**
* @author godotg * @author godotg
@@ -303,7 +302,8 @@ public class CodeGenerateRuby implements ICodeGenerate {
if (field.isAnnotationPresent(Compatible.class)) { if (field.isAnnotationPresent(Compatible.class)) {
rbBuilder.append("if buffer.compatibleRead(beforeReadIndex, length)").append(LS); rbBuilder.append("if buffer.compatibleRead(beforeReadIndex, length)").append(LS);
var compatibleReadObject = rbSerializer(fieldRegistration.serializer()).readObject(rbBuilder, 1, field, fieldRegistration); var compatibleReadObject = rbSerializer(fieldRegistration.serializer()).readObject(rbBuilder, 1, field, fieldRegistration);
rbBuilder.append(TAB).append(StringUtils.format("packet.{} = {}", field.getName(), compatibleReadObject)).append(LS); GenerateProtocolFile.addTabWith2Space(rbBuilder, 1);
rbBuilder.append(StringUtils.format("packet.{} = {}", field.getName(), compatibleReadObject)).append(LS);
rbBuilder.append("end").append(LS); rbBuilder.append("end").append(LS);
continue; continue;
} }
@@ -35,7 +35,7 @@ public class RubyArraySerializer implements IRubySerializer {
@Override @Override
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) { public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
if (CutDownArraySerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.Ruby)) { if (CutDownArraySerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.Ruby)) {
return; return;
} }
@@ -43,29 +43,29 @@ public class RubyArraySerializer implements IRubySerializer {
ArrayField arrayField = (ArrayField) fieldRegistration; ArrayField arrayField = (ArrayField) fieldRegistration;
builder.append(StringUtils.format("if {}.nil? || {}.empty?", objectStr, objectStr)).append(LS); builder.append(StringUtils.format("if {}.nil? || {}.empty?", objectStr, objectStr)).append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append("buffer.writeInt(0)").append(LS); builder.append("buffer.writeInt(0)").append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append("else").append(LS); builder.append("else").append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append(StringUtils.format("buffer.writeInt({}.length)", objectStr)).append(LS); builder.append(StringUtils.format("buffer.writeInt({}.length)", objectStr)).append(LS);
String element = "element" + GenerateProtocolFile.localVariableId++; String element = "element" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append(StringUtils.format("for {} in {}", element, objectStr)).append(LS); builder.append(StringUtils.format("for {} in {}", element, objectStr)).append(LS);
CodeGenerateRuby.rbSerializer(arrayField.getArrayElementRegistration().serializer()) CodeGenerateRuby.rbSerializer(arrayField.getArrayElementRegistration().serializer())
.writeObject(builder, element, deep + 2, field, arrayField.getArrayElementRegistration()); .writeObject(builder, element, deep + 2, field, arrayField.getArrayElementRegistration());
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append("end").append(LS); builder.append("end").append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append("end").append(LS); builder.append("end").append(LS);
} }
@Override @Override
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) { public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
var cutDown = CutDownArraySerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.Ruby); var cutDown = CutDownArraySerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.Ruby);
if (cutDown != null) { if (cutDown != null) {
return cutDown; return cutDown;
@@ -79,21 +79,21 @@ public class RubyArraySerializer implements IRubySerializer {
String i = "index" + GenerateProtocolFile.localVariableId++; String i = "index" + GenerateProtocolFile.localVariableId++;
String size = "size" + GenerateProtocolFile.localVariableId++; String size = "size" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("{} = buffer.readInt()", size)).append(LS); builder.append(StringUtils.format("{} = buffer.readInt()", size)).append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("if {} > 0", size)).append(LS); builder.append(StringUtils.format("if {} > 0", size)).append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append(StringUtils.format("for {} in 0..{} - 1", i, size)).append(LS); builder.append(StringUtils.format("for {} in 0..{} - 1", i, size)).append(LS);
String readObject = CodeGenerateRuby.rbSerializer(arrayField.getArrayElementRegistration().serializer()) String readObject = CodeGenerateRuby.rbSerializer(arrayField.getArrayElementRegistration().serializer())
.readObject(builder, deep + 2, field, arrayField.getArrayElementRegistration()); .readObject(builder, deep + 2, field, arrayField.getArrayElementRegistration());
GenerateProtocolFile.addTab(builder, deep + 2); GenerateProtocolFile.addTabWith2Space(builder, deep + 2);
builder.append(StringUtils.format("{}.push({})", result, readObject)).append(LS); builder.append(StringUtils.format("{}.push({})", result, readObject)).append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append("end").append(LS); builder.append("end").append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append("end").append(LS); builder.append("end").append(LS);
return result; return result;
} }
@@ -32,7 +32,7 @@ public class RubyBoolSerializer implements IRubySerializer {
@Override @Override
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) { public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("buffer.writeBool({})", objectStr)).append(LS); builder.append(StringUtils.format("buffer.writeBool({})", objectStr)).append(LS);
} }
@@ -40,7 +40,7 @@ public class RubyBoolSerializer implements IRubySerializer {
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) { public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
String result = "result" + GenerateProtocolFile.localVariableId++; String result = "result" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("{} = buffer.readBool() ", result)).append(LS); builder.append(StringUtils.format("{} = buffer.readBool() ", result)).append(LS);
return result; return result;
} }
@@ -32,7 +32,7 @@ public class RubyByteSerializer implements IRubySerializer {
@Override @Override
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) { public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("buffer.writeByte({})", objectStr)).append(LS); builder.append(StringUtils.format("buffer.writeByte({})", objectStr)).append(LS);
} }
@@ -40,7 +40,7 @@ public class RubyByteSerializer implements IRubySerializer {
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) { public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
String result = "result" + GenerateProtocolFile.localVariableId++; String result = "result" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("{} = buffer.readByte()", result)).append(LS); builder.append(StringUtils.format("{} = buffer.readByte()", result)).append(LS);
return result; return result;
} }
@@ -32,7 +32,7 @@ public class RubyDoubleSerializer implements IRubySerializer {
@Override @Override
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) { public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("buffer.writeDouble({})", objectStr)).append(LS); builder.append(StringUtils.format("buffer.writeDouble({})", objectStr)).append(LS);
} }
@@ -40,7 +40,7 @@ public class RubyDoubleSerializer implements IRubySerializer {
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) { public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
String result = "result" + GenerateProtocolFile.localVariableId++; String result = "result" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("{} = buffer.readDouble()", result)).append(LS); builder.append(StringUtils.format("{} = buffer.readDouble()", result)).append(LS);
return result; return result;
} }
@@ -32,7 +32,7 @@ public class RubyFloatSerializer implements IRubySerializer {
@Override @Override
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) { public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("buffer.writeFloat({})", objectStr)).append(LS); builder.append(StringUtils.format("buffer.writeFloat({})", objectStr)).append(LS);
} }
@@ -40,7 +40,7 @@ public class RubyFloatSerializer implements IRubySerializer {
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) { public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
String result = "result" + GenerateProtocolFile.localVariableId++; String result = "result" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("{} = buffer.readFloat()", result)).append(LS); builder.append(StringUtils.format("{} = buffer.readFloat()", result)).append(LS);
return result; return result;
} }
@@ -32,7 +32,7 @@ public class RubyIntSerializer implements IRubySerializer {
@Override @Override
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) { public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("buffer.writeInt({})", objectStr)).append(LS); builder.append(StringUtils.format("buffer.writeInt({})", objectStr)).append(LS);
} }
@@ -40,7 +40,7 @@ public class RubyIntSerializer implements IRubySerializer {
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) { public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
String result = "result" + GenerateProtocolFile.localVariableId++; String result = "result" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("{} = buffer.readInt()", result)).append(LS); builder.append(StringUtils.format("{} = buffer.readInt()", result)).append(LS);
return result; return result;
} }
@@ -35,7 +35,7 @@ public class RubyListSerializer implements IRubySerializer {
@Override @Override
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) { public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
if (CutDownListSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.Ruby)) { if (CutDownListSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.Ruby)) {
return; return;
} }
@@ -43,29 +43,29 @@ public class RubyListSerializer implements IRubySerializer {
ListField listField = (ListField) fieldRegistration; ListField listField = (ListField) fieldRegistration;
builder.append(StringUtils.format("if {}.nil? || {}.empty?", objectStr, objectStr)).append(LS); builder.append(StringUtils.format("if {}.nil? || {}.empty?", objectStr, objectStr)).append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append("buffer.writeInt(0)").append(LS); builder.append("buffer.writeInt(0)").append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append("else").append(LS); builder.append("else").append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append(StringUtils.format("buffer.writeInt({}.length)", objectStr)).append(LS); builder.append(StringUtils.format("buffer.writeInt({}.length)", objectStr)).append(LS);
String element = "element" + GenerateProtocolFile.localVariableId++; String element = "element" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append(StringUtils.format("for {} in {}", element, objectStr)).append(LS); builder.append(StringUtils.format("for {} in {}", element, objectStr)).append(LS);
CodeGenerateRuby.rbSerializer(listField.getListElementRegistration().serializer()) CodeGenerateRuby.rbSerializer(listField.getListElementRegistration().serializer())
.writeObject(builder, element, deep + 2, field, listField.getListElementRegistration()); .writeObject(builder, element, deep + 2, field, listField.getListElementRegistration());
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append("end").append(LS); builder.append("end").append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append("end").append(LS); builder.append("end").append(LS);
} }
@Override @Override
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) { public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
var cutDown = CutDownListSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.Ruby); var cutDown = CutDownListSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.Ruby);
if (cutDown != null) { if (cutDown != null) {
return cutDown; return cutDown;
@@ -79,21 +79,21 @@ public class RubyListSerializer implements IRubySerializer {
String i = "index" + GenerateProtocolFile.localVariableId++; String i = "index" + GenerateProtocolFile.localVariableId++;
String size = "size" + GenerateProtocolFile.localVariableId++; String size = "size" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("{} = buffer.readInt()", size)).append(LS); builder.append(StringUtils.format("{} = buffer.readInt()", size)).append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("if {} > 0", size)).append(LS); builder.append(StringUtils.format("if {} > 0", size)).append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append(StringUtils.format("for {} in 0..{} - 1", i, size)).append(LS); builder.append(StringUtils.format("for {} in 0..{} - 1", i, size)).append(LS);
String readObject = CodeGenerateRuby.rbSerializer(listField.getListElementRegistration().serializer()) String readObject = CodeGenerateRuby.rbSerializer(listField.getListElementRegistration().serializer())
.readObject(builder, deep + 2, field, listField.getListElementRegistration()); .readObject(builder, deep + 2, field, listField.getListElementRegistration());
GenerateProtocolFile.addTab(builder, deep + 2); GenerateProtocolFile.addTabWith2Space(builder, deep + 2);
builder.append(StringUtils.format("{}.push({})", result, readObject)).append(LS); builder.append(StringUtils.format("{}.push({})", result, readObject)).append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append("end").append(LS); builder.append("end").append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append("end").append(LS); builder.append("end").append(LS);
return result; return result;
} }
@@ -32,7 +32,7 @@ public class RubyLongSerializer implements IRubySerializer {
@Override @Override
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) { public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("buffer.writeLong({})", objectStr)).append(LS); builder.append(StringUtils.format("buffer.writeLong({})", objectStr)).append(LS);
} }
@@ -40,7 +40,7 @@ public class RubyLongSerializer implements IRubySerializer {
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) { public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
String result = "result" + GenerateProtocolFile.localVariableId++; String result = "result" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("{} = buffer.readLong()", result)).append(LS); builder.append(StringUtils.format("{} = buffer.readLong()", result)).append(LS);
return result; return result;
} }
@@ -35,41 +35,41 @@ public class RubyMapSerializer implements IRubySerializer {
@Override @Override
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) { public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
if (CutDownMapSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.Ruby)) { if (CutDownMapSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.Ruby)) {
return; return;
} }
MapField mapField = (MapField) fieldRegistration; MapField mapField = (MapField) fieldRegistration;
builder.append(StringUtils.format("if {}.nil? || {}.empty?", objectStr, objectStr)).append(LS); builder.append(StringUtils.format("if {}.nil? || {}.empty?", objectStr, objectStr)).append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append("buffer.writeInt(0)").append(LS); builder.append("buffer.writeInt(0)").append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append("else").append(LS); builder.append("else").append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append(StringUtils.format("buffer.writeInt({}.length)", objectStr)).append(LS); builder.append(StringUtils.format("buffer.writeInt({}.length)", objectStr)).append(LS);
String key = "key" + GenerateProtocolFile.localVariableId++; String key = "key" + GenerateProtocolFile.localVariableId++;
String value = "value" + GenerateProtocolFile.localVariableId++; String value = "value" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append(StringUtils.format("{}.each do |{}, {}|", objectStr, key, value)).append(LS); builder.append(StringUtils.format("{}.each do |{}, {}|", objectStr, key, value)).append(LS);
CodeGenerateRuby.rbSerializer(mapField.getMapKeyRegistration().serializer()) CodeGenerateRuby.rbSerializer(mapField.getMapKeyRegistration().serializer())
.writeObject(builder, key, deep + 2, field, mapField.getMapKeyRegistration()); .writeObject(builder, key, deep + 2, field, mapField.getMapKeyRegistration());
CodeGenerateRuby.rbSerializer(mapField.getMapValueRegistration().serializer()) CodeGenerateRuby.rbSerializer(mapField.getMapValueRegistration().serializer())
.writeObject(builder, value, deep + 2, field, mapField.getMapValueRegistration()); .writeObject(builder, value, deep + 2, field, mapField.getMapValueRegistration());
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append("end").append(LS); builder.append("end").append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append("end").append(LS); builder.append("end").append(LS);
} }
@Override @Override
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) { public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
var cutDown = CutDownMapSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.Ruby); var cutDown = CutDownMapSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.Ruby);
if (cutDown != null) { if (cutDown != null) {
return cutDown; return cutDown;
@@ -80,15 +80,15 @@ public class RubyMapSerializer implements IRubySerializer {
builder.append(StringUtils.format("{} = Hash.new()", result)).append(LS); builder.append(StringUtils.format("{} = Hash.new()", result)).append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
String size = "size" + GenerateProtocolFile.localVariableId++; String size = "size" + GenerateProtocolFile.localVariableId++;
builder.append(StringUtils.format("{} = buffer.readInt()", size)).append(LS); builder.append(StringUtils.format("{} = buffer.readInt()", size)).append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("if {} > 0", size)).append(LS); builder.append(StringUtils.format("if {} > 0", size)).append(LS);
String i = "index" + GenerateProtocolFile.localVariableId++; String i = "index" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append(StringUtils.format("for {} in 0..{} - 1", i, size)).append(LS); builder.append(StringUtils.format("for {} in 0..{} - 1", i, size)).append(LS);
String keyObject = CodeGenerateRuby.rbSerializer(mapField.getMapKeyRegistration().serializer()) String keyObject = CodeGenerateRuby.rbSerializer(mapField.getMapKeyRegistration().serializer())
@@ -97,13 +97,13 @@ public class RubyMapSerializer implements IRubySerializer {
String valueObject = CodeGenerateRuby.rbSerializer(mapField.getMapValueRegistration().serializer()) String valueObject = CodeGenerateRuby.rbSerializer(mapField.getMapValueRegistration().serializer())
.readObject(builder, deep + 2, field, mapField.getMapValueRegistration()); .readObject(builder, deep + 2, field, mapField.getMapValueRegistration());
GenerateProtocolFile.addTab(builder, deep + 2); GenerateProtocolFile.addTabWith2Space(builder, deep + 2);
builder.append(StringUtils.format("{}[{}] = {}", result, keyObject, valueObject)).append(LS); builder.append(StringUtils.format("{}[{}] = {}", result, keyObject, valueObject)).append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append("end").append(LS); builder.append("end").append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append("end").append(LS); builder.append("end").append(LS);
return result; return result;
} }
@@ -34,7 +34,7 @@ public class RubyObjectProtocolSerializer implements IRubySerializer {
@Override @Override
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) { public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
ObjectProtocolField objectProtocolField = (ObjectProtocolField) fieldRegistration; ObjectProtocolField objectProtocolField = (ObjectProtocolField) fieldRegistration;
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("buffer.writePacket({}, {})", objectStr, objectProtocolField.getProtocolId())).append(LS); builder.append(StringUtils.format("buffer.writePacket({}, {})", objectStr, objectProtocolField.getProtocolId())).append(LS);
} }
@@ -42,7 +42,7 @@ public class RubyObjectProtocolSerializer implements IRubySerializer {
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) { public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
ObjectProtocolField objectProtocolField = (ObjectProtocolField) fieldRegistration; ObjectProtocolField objectProtocolField = (ObjectProtocolField) fieldRegistration;
var result = "result" + GenerateProtocolFile.localVariableId++; var result = "result" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("{} = buffer.readPacket({})", result, objectProtocolField.getProtocolId())).append(LS); builder.append(StringUtils.format("{} = buffer.readPacket({})", result, objectProtocolField.getProtocolId())).append(LS);
return result; return result;
} }
@@ -35,7 +35,7 @@ public class RubySetSerializer implements IRubySerializer {
@Override @Override
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) { public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
if (CutDownSetSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.Ruby)) { if (CutDownSetSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.Ruby)) {
return; return;
} }
@@ -43,29 +43,29 @@ public class RubySetSerializer implements IRubySerializer {
SetField setField = (SetField) fieldRegistration; SetField setField = (SetField) fieldRegistration;
builder.append(StringUtils.format("if {}.nil? || {}.empty?", objectStr, objectStr)).append(LS); builder.append(StringUtils.format("if {}.nil? || {}.empty?", objectStr, objectStr)).append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append("buffer.writeInt(0)").append(LS); builder.append("buffer.writeInt(0)").append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append("else").append(LS); builder.append("else").append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append(StringUtils.format("buffer.writeInt({}.length)", objectStr)).append(LS); builder.append(StringUtils.format("buffer.writeInt({}.length)", objectStr)).append(LS);
String element = "element" + GenerateProtocolFile.localVariableId++; String element = "element" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append(StringUtils.format("for {} in {}", element, objectStr)).append(LS); builder.append(StringUtils.format("for {} in {}", element, objectStr)).append(LS);
CodeGenerateRuby.rbSerializer(setField.getSetElementRegistration().serializer()) CodeGenerateRuby.rbSerializer(setField.getSetElementRegistration().serializer())
.writeObject(builder, element, deep + 2, field, setField.getSetElementRegistration()); .writeObject(builder, element, deep + 2, field, setField.getSetElementRegistration());
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append("end").append(LS); builder.append("end").append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append("end").append(LS); builder.append("end").append(LS);
} }
@Override @Override
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) { public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
var cutDown = CutDownSetSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.Ruby); var cutDown = CutDownSetSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.Ruby);
if (cutDown != null) { if (cutDown != null) {
return cutDown; return cutDown;
@@ -79,21 +79,21 @@ public class RubySetSerializer implements IRubySerializer {
String i = "index" + GenerateProtocolFile.localVariableId++; String i = "index" + GenerateProtocolFile.localVariableId++;
String size = "size" + GenerateProtocolFile.localVariableId++; String size = "size" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("{} = buffer.readInt()", size)).append(LS); builder.append(StringUtils.format("{} = buffer.readInt()", size)).append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("if {} > 0", size)).append(LS); builder.append(StringUtils.format("if {} > 0", size)).append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append(StringUtils.format("for {} in 0..{} - 1", i, size)).append(LS); builder.append(StringUtils.format("for {} in 0..{} - 1", i, size)).append(LS);
String readObject = CodeGenerateRuby.rbSerializer(setField.getSetElementRegistration().serializer()) String readObject = CodeGenerateRuby.rbSerializer(setField.getSetElementRegistration().serializer())
.readObject(builder, deep + 2, field, setField.getSetElementRegistration()); .readObject(builder, deep + 2, field, setField.getSetElementRegistration());
GenerateProtocolFile.addTab(builder, deep + 2); GenerateProtocolFile.addTabWith2Space(builder, deep + 2);
builder.append(StringUtils.format("{}.add({})", result, readObject)).append(LS); builder.append(StringUtils.format("{}.add({})", result, readObject)).append(LS);
GenerateProtocolFile.addTab(builder, deep + 1); GenerateProtocolFile.addTabWith2Space(builder, deep + 1);
builder.append("end").append(LS); builder.append("end").append(LS);
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append("end").append(LS); builder.append("end").append(LS);
return result; return result;
} }
@@ -32,7 +32,7 @@ public class RubyShortSerializer implements IRubySerializer {
@Override @Override
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) { public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("buffer.writeShort({})", objectStr)).append(LS); builder.append(StringUtils.format("buffer.writeShort({})", objectStr)).append(LS);
} }
@@ -40,7 +40,7 @@ public class RubyShortSerializer implements IRubySerializer {
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) { public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
String result = "result" + GenerateProtocolFile.localVariableId++; String result = "result" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("{} = buffer.readShort()", result)).append(LS); builder.append(StringUtils.format("{} = buffer.readShort()", result)).append(LS);
return result; return result;
} }
@@ -32,14 +32,14 @@ public class RubyStringSerializer implements IRubySerializer {
@Override @Override
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) { public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("buffer.writeString({})", objectStr)).append(LS); builder.append(StringUtils.format("buffer.writeString({})", objectStr)).append(LS);
} }
@Override @Override
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) { public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
String result = "result" + GenerateProtocolFile.localVariableId++; String result = "result" + GenerateProtocolFile.localVariableId++;
GenerateProtocolFile.addTab(builder, deep); GenerateProtocolFile.addTabWith2Space(builder, deep);
builder.append(StringUtils.format("{} = buffer.readString()", result)).append(LS); builder.append(StringUtils.format("{} = buffer.readString()", result)).append(LS);
return result; return result;
} }
File diff suppressed because it is too large. Load diff
@@ -1,7 +1,7 @@
${protocol_note} ${protocol_note}
class ${protocol_name} class ${protocol_name}
${protocol_field_accessor} ${protocol_field_accessor}
def initialize() def initialize()
${protocol_field_definition} ${protocol_field_definition}
end end
end end
@@ -2,28 +2,28 @@ ${protocol_imports}
class ProtocolManager class ProtocolManager
@@protocols = Array.new(32767) @@protocols = Array.new(32767)
@@protocolIdMap = Hash.new() @@protocolIdMap = Hash.new()
def self.initProtocol() def self.initProtocol()
${protocol_manager_registrations} ${protocol_manager_registrations}
end end
def self.getProtocol(protocolId) def self.getProtocol(protocolId)
return @@protocols[protocolId] return @@protocols[protocolId]
end end
def self.write(buffer, packet) def self.write(buffer, packet)
protocolId = @@protocolIdMap[packet.class] protocolId = @@protocolIdMap[packet.class]
buffer.writeShort(protocolId) buffer.writeShort(protocolId)
protocol = @@protocols[protocolId] protocol = @@protocols[protocolId]
protocol.write(buffer, packet) protocol.write(buffer, packet)
end end
def self.read(buffer) def self.read(buffer)
protocolId = buffer.readShort() protocolId = buffer.readShort()
protocol = @@protocols[protocolId] protocol = @@protocols[protocolId]
packet = protocol.read(buffer) packet = protocol.read(buffer)
return packet return packet
end end
end end
@@ -1,27 +1,27 @@
class ${protocol_name}Registration class ${protocol_name}Registration
def protocolId() def protocolId()
return ${protocol_id} return ${protocol_id}
end end
def write(buffer, packet) def write(buffer, packet)
if packet.nil? if packet.nil?
buffer.writeInt(0) buffer.writeInt(0)
return return
end
${protocol_write_serialization}
end end
${protocol_write_serialization}
end
def read(buffer) def read(buffer)
length = buffer.readInt() length = buffer.readInt()
if length == 0 if length == 0
return nil return nil
end
beforeReadIndex = buffer.getReadOffset()
packet = ${protocol_name}.new()
${protocol_read_deserialization}
if length > 0
buffer.setReadOffset(beforeReadIndex + length)
end
return packet
end end
beforeReadIndex = buffer.getReadOffset()
packet = ${protocol_name}.new()
${protocol_read_deserialization}
if length > 0
buffer.setReadOffset(beforeReadIndex + length)
end
return packet
end
end end