public static object ToOutputData(DefTable table, List <Record> records, string dataType) { switch (dataType) { case "data_bin": { var buf = ThreadLocalTemporalByteBufPool.Alloc(1024 * 1024); BinaryExportor.Ins.WriteList(table, records, buf); var bytes = buf.CopyData(); ThreadLocalTemporalByteBufPool.Free(buf); return(bytes); } case "data_json": case "data_json2": { // data_json与data_json2格式区别在于 // data_json的map格式是 [[key1,value1],[] ..] // data_json2的map格式是 { key1:value1, ...} var ss = new MemoryStream(); var jsonWriter = new Utf8JsonWriter(ss, new JsonWriterOptions() { Indented = !table.Assembly.OutputCompactJson, SkipValidation = false, Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All), }); if (dataType == "data_json") { JsonExportor.Ins.WriteAsArray(records, jsonWriter); } else { Json2Exportor.Ins.WriteAsObject(table, records, jsonWriter); } jsonWriter.Flush(); return(DataUtil.StreamToBytes(ss)); } case "data_lua": { var content = new StringBuilder(); switch (table.Mode) { case ETableMode.ONE: { LuaExportor.Ins.ExportTableSingleton(table, records[0], content); break; } case ETableMode.MAP: { LuaExportor.Ins.ExportTableMap(table, records, content); break; } case ETableMode.LIST: { LuaExportor.Ins.ExportTableList(table, records, content); break; } default: { throw new NotSupportedException(); } } return(string.Join('\n', content)); } case "data_protobuf_bin": { var ms = new MemoryStream(); ProtobufBinExportor.Ins.WriteList(table, records, ms); return(DataUtil.StreamToBytes(ms)); } case "data_protobuf_json": { var ss = new MemoryStream(); var jsonWriter = new Utf8JsonWriter(ss, new JsonWriterOptions() { Indented = !table.Assembly.OutputCompactJson, SkipValidation = false, Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All), }); ProtobufJsonExportor.Ins.WriteAsTable(records, jsonWriter); jsonWriter.Flush(); return(DataUtil.StreamToBytes(ss)); } case "data_msgpack": { var ms = new System.Buffers.ArrayBufferWriter <byte>(); var writer = new MessagePackWriter(ms); MsgPackExportor.Ins.WriteList(table, records, ref writer); writer.Flush(); return(ms.WrittenSpan.ToArray()); } case "data_flatbuffers_json": { var ss = new MemoryStream(); var jsonWriter = new Utf8JsonWriter(ss, new JsonWriterOptions() { Indented = !table.Assembly.OutputCompactJson, SkipValidation = false, Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All), }); FlatBuffersJsonExportor.Ins.WriteAsTable(records, jsonWriter); jsonWriter.Flush(); return(DataUtil.StreamToBytes(ss)); } //case "data_erlang": //{ // var content = new StringBuilder(); // switch (table.Mode) // { // case ETableMode.ONE: // { // ErlangExport.Ins.ExportTableSingleton(table, records[0], content); // break; // } // case ETableMode.MAP: // { // ErlangExport.Ins.ExportTableMap(table, records, content); // break; // } // default: // { // throw new NotSupportedException(); // } // } // return content.ToString(); //} default: { throw new ArgumentException($"not support datatype:{dataType}"); } } }
public static string CsImplDataType(DefBean type, DefBean parent) { return(DataUtil.GetImplTypeName(type, parent)); }