mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-05-19 21:26:08 +00:00
feat[lua]: compatible field of inside protocol class in lua
This commit is contained in:
@@ -22,6 +22,7 @@ import com.zfoo.protocol.model.Pair;
|
||||
import com.zfoo.protocol.registration.IProtocolRegistration;
|
||||
import com.zfoo.protocol.registration.ProtocolRegistration;
|
||||
import com.zfoo.protocol.serializer.CodeLanguage;
|
||||
import com.zfoo.protocol.serializer.csharp.GenerateCsUtils;
|
||||
import com.zfoo.protocol.serializer.reflect.*;
|
||||
import com.zfoo.protocol.util.ClassUtils;
|
||||
import com.zfoo.protocol.util.FileUtils;
|
||||
@@ -127,7 +128,7 @@ public abstract class GenerateLuaUtils {
|
||||
var readPacket = readPacket(registration);
|
||||
|
||||
protocolTemplate = StringUtils.format(protocolTemplate, classNote, protocolClazzName, StringUtils.EMPTY_JSON, protocolClazzName
|
||||
, valueOfMethod.getKey().trim(), valueOfMethod.getValue().trim(), protocolClazzName, protocolId
|
||||
, valueOfMethod.trim(), protocolClazzName, protocolId
|
||||
, protocolClazzName, writePacket.trim(), protocolClazzName, protocolClazzName, readPacket.trim(), protocolClazzName);
|
||||
|
||||
var outputPath = StringUtils.format("{}/{}/{}.lua"
|
||||
@@ -135,31 +136,32 @@ public abstract class GenerateLuaUtils {
|
||||
FileUtils.writeStringToFile(new File(outputPath), protocolTemplate, true);
|
||||
}
|
||||
|
||||
private static Pair<String, String> valueOfMethod(ProtocolRegistration registration) {
|
||||
private static String valueOfMethod(ProtocolRegistration registration) {
|
||||
var protocolId = registration.getId();
|
||||
var fields = registration.getFields();
|
||||
|
||||
var valueOfParams = StringUtils.joinWith(", ", Arrays.stream(fields).map(it -> it.getName()).toList().toArray());
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var luaBuilder = new StringBuilder();
|
||||
|
||||
for (var i = 0; i < fields.length; i++) {
|
||||
var field = fields[i];
|
||||
var fieldRegistration = fieldRegistrations[i];
|
||||
var fieldName = field.getName();
|
||||
// 生成注释
|
||||
var fieldNote = GenerateProtocolNote.fieldNote(protocolId, fieldName, CodeLanguage.Lua);
|
||||
if (StringUtils.isNotBlank(fieldNote)) {
|
||||
luaBuilder.append(TAB + TAB).append(fieldNote).append(LS);
|
||||
}
|
||||
|
||||
var fieldDefaultValue = luaSerializer(fieldRegistration.serializer()).fieldDefaultValue(field, fieldRegistration);
|
||||
if (i == fields.length - 1) {
|
||||
luaBuilder.append(TAB + TAB).append(StringUtils.format("{} = {}", fieldName, fieldName));
|
||||
luaBuilder.append(TAB + TAB).append(StringUtils.format("{} = {}", fieldName, fieldDefaultValue));
|
||||
} else {
|
||||
luaBuilder.append(TAB + TAB).append(StringUtils.format("{} = {},", fieldName, fieldName));
|
||||
luaBuilder.append(TAB + TAB).append(StringUtils.format("{} = {},", fieldName, fieldDefaultValue));
|
||||
}
|
||||
var typeNote = GenerateCsUtils.toCsClassName(field.getGenericType().getTypeName());
|
||||
// 生成类型的注释
|
||||
luaBuilder.append(" -- ").append(field.getGenericType().getTypeName()).append(LS);
|
||||
luaBuilder.append(" -- ").append(typeNote).append(LS);
|
||||
}
|
||||
return new Pair<>(valueOfParams, luaBuilder.toString());
|
||||
return luaBuilder.toString();
|
||||
}
|
||||
|
||||
private static String writePacket(ProtocolRegistration registration) {
|
||||
|
||||
@@ -22,6 +22,8 @@ import java.lang.reflect.Field;
|
||||
*/
|
||||
public interface ILuaSerializer {
|
||||
|
||||
String fieldDefaultValue(Field field, IFieldRegistration fieldRegistration);
|
||||
|
||||
void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration);
|
||||
|
||||
String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration);
|
||||
|
||||
@@ -30,6 +30,11 @@ import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
*/
|
||||
public class LuaArraySerializer implements ILuaSerializer {
|
||||
|
||||
@Override
|
||||
public String fieldDefaultValue(Field field, IFieldRegistration fieldRegistration) {
|
||||
return "{}";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -27,6 +27,11 @@ import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
*/
|
||||
public class LuaBooleanSerializer implements ILuaSerializer {
|
||||
|
||||
@Override
|
||||
public String fieldDefaultValue(Field field, IFieldRegistration fieldRegistration) {
|
||||
return "false";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -27,6 +27,11 @@ import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
*/
|
||||
public class LuaByteSerializer implements ILuaSerializer {
|
||||
|
||||
@Override
|
||||
public String fieldDefaultValue(Field field, IFieldRegistration fieldRegistration) {
|
||||
return "0";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -27,6 +27,11 @@ import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
*/
|
||||
public class LuaDoubleSerializer implements ILuaSerializer {
|
||||
|
||||
@Override
|
||||
public String fieldDefaultValue(Field field, IFieldRegistration fieldRegistration) {
|
||||
return "0";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -27,6 +27,10 @@ import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
*/
|
||||
public class LuaFloatSerializer implements ILuaSerializer {
|
||||
|
||||
@Override
|
||||
public String fieldDefaultValue(Field field, IFieldRegistration fieldRegistration) {
|
||||
return "0";
|
||||
}
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -26,6 +26,10 @@ import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
*/
|
||||
public class LuaIntSerializer implements ILuaSerializer {
|
||||
|
||||
@Override
|
||||
public String fieldDefaultValue(Field field, IFieldRegistration fieldRegistration) {
|
||||
return "0";
|
||||
}
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -29,6 +29,11 @@ import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
*/
|
||||
public class LuaListSerializer implements ILuaSerializer {
|
||||
|
||||
@Override
|
||||
public String fieldDefaultValue(Field field, IFieldRegistration fieldRegistration) {
|
||||
return "{}";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -26,6 +26,11 @@ import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
*/
|
||||
public class LuaLongSerializer implements ILuaSerializer {
|
||||
|
||||
@Override
|
||||
public String fieldDefaultValue(Field field, IFieldRegistration fieldRegistration) {
|
||||
return "0";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -29,6 +29,10 @@ import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
*/
|
||||
public class LuaMapSerializer implements ILuaSerializer {
|
||||
|
||||
@Override
|
||||
public String fieldDefaultValue(Field field, IFieldRegistration fieldRegistration) {
|
||||
return "{}";
|
||||
}
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
+5
@@ -26,6 +26,11 @@ import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
*/
|
||||
public class LuaObjectProtocolSerializer implements ILuaSerializer {
|
||||
|
||||
@Override
|
||||
public String fieldDefaultValue(Field field, IFieldRegistration fieldRegistration) {
|
||||
return "nil";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
ObjectProtocolField objectProtocolField = (ObjectProtocolField) fieldRegistration;
|
||||
|
||||
@@ -29,6 +29,11 @@ import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
*/
|
||||
public class LuaSetSerializer implements ILuaSerializer {
|
||||
|
||||
@Override
|
||||
public String fieldDefaultValue(Field field, IFieldRegistration fieldRegistration) {
|
||||
return "{}";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -27,6 +27,10 @@ import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
*/
|
||||
public class LuaShortSerializer implements ILuaSerializer {
|
||||
|
||||
@Override
|
||||
public String fieldDefaultValue(Field field, IFieldRegistration fieldRegistration) {
|
||||
return "0";
|
||||
}
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -26,6 +26,11 @@ import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
*/
|
||||
public class LuaStringSerializer implements ILuaSerializer {
|
||||
|
||||
@Override
|
||||
public String fieldDefaultValue(Field field, IFieldRegistration fieldRegistration) {
|
||||
return "\"\"";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -115,10 +115,8 @@ function ByteBuffer:getWriteOffset()
|
||||
end
|
||||
|
||||
function ByteBuffer:setWriteOffset(writeOffset)
|
||||
if writeOffset > #self.buffer then
|
||||
error("index out of bounds exception: readerIndex: " + self.readOffset
|
||||
+ ", writerIndex: " + self.writeOffset
|
||||
+ "(expected: 0 <= readerIndex <= writerIndex <= capacity:" + #self.buffer)
|
||||
if writeOffset > #self.buffer + 1 then
|
||||
error(string.format("writeOffset: %s index out of bounds exception: readerIndex: %s, writerIndex: %s, (expected: 0 <= readerIndex <= writerIndex <= capacity: %s)", writeOffset, self.readOffset, self.writeOffset, #self.buffer))
|
||||
end
|
||||
self.writeOffset = writeOffset
|
||||
return self
|
||||
@@ -130,9 +128,7 @@ end
|
||||
|
||||
function ByteBuffer:setReadOffset(readOffset)
|
||||
if readOffset > self.writeOffset then
|
||||
error("index out of bounds exception: readerIndex: " + self.readOffset
|
||||
+ ", writerIndex: " + this.writeOffset
|
||||
+ "(expected: 0 <= readerIndex <= writerIndex <= capacity:" + #self.buffer)
|
||||
error(string.format("readOffset: %s index out of bounds exception: readerIndex: %s, writerIndex: %s, (expected: 0 <= readerIndex <= writerIndex <= capacity: %s)", readOffset, self.readOffset, self.writeOffset, #self.buffer))
|
||||
end
|
||||
self.readOffset = readOffset
|
||||
return self
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{}
|
||||
local {} = {}
|
||||
|
||||
function {}:new({})
|
||||
function {}:new()
|
||||
local obj = {
|
||||
{}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user