From 69fa2c9156a09c85d27d9ff2fd8d51cba05a449b Mon Sep 17 00:00:00 2001 From: redkale Date: Fri, 4 Oct 2024 20:02:37 +0800 Subject: [PATCH] pb --- .../convert/pb/ProtobufArrayDecoder.java | 1 + .../convert/pb/ProtobufArrayEncoder.java | 4 +-- .../convert/pb/ProtobufBytesWriter.java | 8 +++-- .../redkale/convert/pb/ProtobufCoders.java | 33 ++----------------- .../convert/pb/ProtobufCollectionEncoder.java | 4 +-- .../convert/pb/ProtobufMapEncoder.java | 20 +++-------- .../convert/pb/ProtobufStreamEncoder.java | 4 +-- 7 files changed, 20 insertions(+), 54 deletions(-) diff --git a/src/main/java/org/redkale/convert/pb/ProtobufArrayDecoder.java b/src/main/java/org/redkale/convert/pb/ProtobufArrayDecoder.java index 7fe4c89c0..9acd8b93f 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufArrayDecoder.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufArrayDecoder.java @@ -17,6 +17,7 @@ import org.redkale.convert.*; */ public class ProtobufArrayDecoder extends ArrayDecoder implements ProtobufTagDecodeable { + protected final boolean componentPrimitived; protected final boolean componentSimpled; diff --git a/src/main/java/org/redkale/convert/pb/ProtobufArrayEncoder.java b/src/main/java/org/redkale/convert/pb/ProtobufArrayEncoder.java index e3aee953b..7120438b4 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufArrayEncoder.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufArrayEncoder.java @@ -42,7 +42,7 @@ public class ProtobufArrayEncoder extends ArrayEncoder protected void convertObjectTo(final ProtobufWriter out, @Nonnull EnMember member, T[] value) { ProtobufEncodeable itemEncoder = (ProtobufEncodeable) this.componentEncoder; - out.writeArrayB(value.length, itemEncoder, value); + //out.writeArrayB(value.length, itemEncoder, value); boolean first = true; for (T item : value) { if (!first) { @@ -55,7 +55,7 @@ public class ProtobufArrayEncoder extends ArrayEncoder } first = false; } - out.writeArrayE(); + //out.writeArrayE(); } protected void convertPrimitivedTo(final ProtobufWriter out, @Nonnull EnMember member, T[] value) { diff --git a/src/main/java/org/redkale/convert/pb/ProtobufBytesWriter.java b/src/main/java/org/redkale/convert/pb/ProtobufBytesWriter.java index fb5dc4b5b..39ec7ceb1 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufBytesWriter.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufBytesWriter.java @@ -18,6 +18,8 @@ import org.redkale.util.ByteTuple; */ public class ProtobufBytesWriter extends ProtobufWriter { + private static final int RESET_MAX_SIZE = DEFAULT_SIZE << 4; + byte[] content; // 链表结构 @@ -60,7 +62,7 @@ public class ProtobufBytesWriter extends ProtobufWriter { } while (p != this); } this.delegate = null; - if (this.content.length > DEFAULT_SIZE) { + if (this.content.length > RESET_MAX_SIZE) { this.content = new byte[DEFAULT_SIZE]; } return true; @@ -82,7 +84,7 @@ public class ProtobufBytesWriter extends ProtobufWriter { } ProtobufBytesWriter result = queue.poll(); if (result == null) { - result = new ProtobufBytesWriter(new byte[256], 0); + result = new ProtobufBytesWriter(new byte[DEFAULT_SIZE], 0); } if (delegate == null) { result.parent = this; @@ -171,7 +173,7 @@ public class ProtobufBytesWriter extends ProtobufWriter { protected int expand(int len) { int newcount = count + len; if (newcount > content.length) { - byte[] newdata = new byte[Math.max(content.length * 2, newcount)]; + byte[] newdata = new byte[Math.max(content.length << 1, newcount)]; System.arraycopy(content, 0, newdata, 0, count); this.content = newdata; } diff --git a/src/main/java/org/redkale/convert/pb/ProtobufCoders.java b/src/main/java/org/redkale/convert/pb/ProtobufCoders.java index 37ae3d2c1..3fcf8a85d 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufCoders.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufCoders.java @@ -12,34 +12,7 @@ import java.net.InetSocketAddress; import java.util.*; import java.util.concurrent.atomic.*; import org.redkale.convert.SimpledCoder; -import org.redkale.convert.ext.AtomicBooleanSimpledCoder; -import org.redkale.convert.ext.AtomicIntegerSimpledCoder; -import org.redkale.convert.ext.AtomicLongSimpledCoder; -import org.redkale.convert.ext.BigDecimalSimpledCoder; -import org.redkale.convert.ext.BigIntegerSimpledCoder; -import org.redkale.convert.ext.BoolSimpledCoder; -import org.redkale.convert.ext.ByteSimpledCoder; -import org.redkale.convert.ext.CharSequenceSimpledCoder; -import org.redkale.convert.ext.CharSequenceSimpledCoder.StringBuilderSimpledCoder; -import org.redkale.convert.ext.CharSimpledCoder; -import org.redkale.convert.ext.DateSimpledCoder; -import org.redkale.convert.ext.DoubleSimpledCoder; -import org.redkale.convert.ext.DurationSimpledCoder; -import org.redkale.convert.ext.FloatSimpledCoder; -import org.redkale.convert.ext.InetAddressSimpledCoder; -import org.redkale.convert.ext.InetAddressSimpledCoder.InetSocketAddressSimpledCoder; -import org.redkale.convert.ext.InstantSimpledCoder; -import org.redkale.convert.ext.IntSimpledCoder; -import org.redkale.convert.ext.LocalDateSimpledCoder; -import org.redkale.convert.ext.LocalDateTimeSimpledCoder; -import org.redkale.convert.ext.LocalTimeSimpledCoder; -import org.redkale.convert.ext.LongAdderSimpledCoder; -import org.redkale.convert.ext.LongSimpledCoder; -import org.redkale.convert.ext.NumberSimpledCoder; -import org.redkale.convert.ext.ShortSimpledCoder; -import org.redkale.convert.ext.StringSimpledCoder; -import org.redkale.convert.ext.StringWrapperSimpledCoder; -import org.redkale.convert.ext.Uint128SimpledCoder; +import org.redkale.convert.ext.*; import org.redkale.util.*; /** @@ -348,7 +321,7 @@ public abstract class ProtobufCoders { } public static class ProtobufStringBuilderSimpledCoder - extends StringBuilderSimpledCoder + extends CharSequenceSimpledCoder.StringBuilderSimpledCoder implements ProtobufEncodeable { public static final ProtobufStringBuilderSimpledCoder instance = new ProtobufStringBuilderSimpledCoder(); @@ -668,7 +641,7 @@ public abstract class ProtobufCoders { } public static class ProtobufInetSocketAddressSimpledCoder - extends InetSocketAddressSimpledCoder + extends InetAddressSimpledCoder.InetSocketAddressSimpledCoder implements ProtobufEncodeable { public static final ProtobufInetSocketAddressSimpledCoder instance = diff --git a/src/main/java/org/redkale/convert/pb/ProtobufCollectionEncoder.java b/src/main/java/org/redkale/convert/pb/ProtobufCollectionEncoder.java index 2dfaaa315..07b63c380 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufCollectionEncoder.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufCollectionEncoder.java @@ -42,7 +42,7 @@ public class ProtobufCollectionEncoder extends CollectionEncoder value) { ProtobufEncodeable itemEncoder = (ProtobufEncodeable) this.componentEncoder; - out.writeArrayB(value.size(), itemEncoder, value); + //out.writeArrayB(value.size(), itemEncoder, value); boolean first = true; for (T item : value) { if (!first) { @@ -55,7 +55,7 @@ public class ProtobufCollectionEncoder extends CollectionEncoder value) { diff --git a/src/main/java/org/redkale/convert/pb/ProtobufMapEncoder.java b/src/main/java/org/redkale/convert/pb/ProtobufMapEncoder.java index ee7c66434..5836e2daa 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufMapEncoder.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufMapEncoder.java @@ -27,8 +27,6 @@ public class ProtobufMapEncoder extends MapEncoder private final EnMember keyMember; private final EnMember valueMember; - private final boolean keySimpled; - private final boolean valueSimpled; public ProtobufMapEncoder(ConvertFactory factory, Type type) { super(factory, type); @@ -39,8 +37,6 @@ public class ProtobufMapEncoder extends MapEncoder setTag(valueMember, ProtobufFactory.getTag("value", valueEncoder.getType(), 2, enumtostring)); setTagSize(keyMember, ProtobufFactory.computeSInt32SizeNoTag(keyMember.getTag())); setTagSize(valueMember, ProtobufFactory.computeSInt32SizeNoTag(valueMember.getTag())); - this.keySimpled = keyEncoder instanceof SimpledCoder; - this.valueSimpled = valueEncoder instanceof SimpledCoder; } @Override @@ -55,7 +51,7 @@ public class ProtobufMapEncoder extends MapEncoder BiFunction mapFieldFunc = out.mapFieldFunc(); ProtobufEncodeable kencoder = (ProtobufEncodeable) this.keyEncoder; ProtobufEncodeable vencoder = (ProtobufEncodeable) this.valueEncoder; - out.writeMapB(values.size(), kencoder, vencoder, value); + //out.writeMapB(values.size(), kencoder, vencoder, value); AtomicBoolean first = new AtomicBoolean(true); values.forEach((key, val0) -> { if (ignoreColumns == null || !ignoreColumns.contains(key.toString())) { @@ -63,11 +59,7 @@ public class ProtobufMapEncoder extends MapEncoder if (!first.get()) { out.writeField(member); } - boolean poll = true; - ProtobufWriter subout = poll ? out.pollChild() : out; - if (!poll) { - subout.writeLength(computeSize(out, key, val)); - } + ProtobufWriter subout = out.pollChild(); subout.writeTag(keyMember.getTag()); if (key == null) { subout.writeLength(0); @@ -80,16 +72,14 @@ public class ProtobufMapEncoder extends MapEncoder } else { vencoder.convertTo(subout, valueMember, val); } - if (poll) { - out.offerChild(subout); - } + out.offerChild(subout); first.set(false); } }); - out.writeMapE(); + //out.writeMapE(); } - public int computeSize(ProtobufWriter out, K key, V val) { + protected int computeSize(ProtobufWriter out, K key, V val) { ProtobufEncodeable kencoder = (ProtobufEncodeable) this.keyEncoder; ProtobufEncodeable vencoder = (ProtobufEncodeable) this.valueEncoder; int keySize = kencoder.computeSize(out, keyMember.getTagSize(), key); diff --git a/src/main/java/org/redkale/convert/pb/ProtobufStreamEncoder.java b/src/main/java/org/redkale/convert/pb/ProtobufStreamEncoder.java index f237171a7..eeb5bf632 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufStreamEncoder.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufStreamEncoder.java @@ -43,7 +43,7 @@ public class ProtobufStreamEncoder extends StreamEncoder protected void convertObjectTo(final ProtobufWriter out, @Nonnull EnMember member, Object[] value) { ProtobufEncodeable itemEncoder = (ProtobufEncodeable) this.componentEncoder; - out.writeArrayB(value.length, itemEncoder, value); + //out.writeArrayB(value.length, itemEncoder, value); boolean first = true; for (Object item : value) { if (!first) { @@ -56,7 +56,7 @@ public class ProtobufStreamEncoder extends StreamEncoder } first = false; } - out.writeArrayE(); + //out.writeArrayE(); } protected void convertPrimitivedTo(final ProtobufWriter out, @Nonnull EnMember member, Object[] value) {