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