This commit is contained in:
redkale
2024-10-04 20:02:37 +08:00
parent 37cc5dd080
commit 69fa2c9156
7 changed files with 20 additions and 54 deletions

View File

@@ -17,6 +17,7 @@ import org.redkale.convert.*;
*/
public class ProtobufArrayDecoder<T> extends ArrayDecoder<ProtobufReader, T>
implements ProtobufTagDecodeable<ProtobufReader, T[]> {
protected final boolean componentPrimitived;
protected final boolean componentSimpled;

View File

@@ -42,7 +42,7 @@ public class ProtobufArrayEncoder<T> extends ArrayEncoder<ProtobufWriter, T>
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<T> extends ArrayEncoder<ProtobufWriter, T>
}
first = false;
}
out.writeArrayE();
//out.writeArrayE();
}
protected void convertPrimitivedTo(final ProtobufWriter out, @Nonnull EnMember member, T[] value) {

View File

@@ -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;
}

View File

@@ -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<ProtobufReader, ProtobufWriter>
extends CharSequenceSimpledCoder.StringBuilderSimpledCoder<ProtobufReader, ProtobufWriter>
implements ProtobufEncodeable<ProtobufWriter, StringBuilder> {
public static final ProtobufStringBuilderSimpledCoder instance = new ProtobufStringBuilderSimpledCoder();
@@ -668,7 +641,7 @@ public abstract class ProtobufCoders {
}
public static class ProtobufInetSocketAddressSimpledCoder
extends InetSocketAddressSimpledCoder<ProtobufReader, ProtobufWriter>
extends InetAddressSimpledCoder.InetSocketAddressSimpledCoder<ProtobufReader, ProtobufWriter>
implements ProtobufEncodeable<ProtobufWriter, InetSocketAddress> {
public static final ProtobufInetSocketAddressSimpledCoder instance =

View File

@@ -42,7 +42,7 @@ public class ProtobufCollectionEncoder<T> extends CollectionEncoder<ProtobufWrit
protected void convertObjectTo(final ProtobufWriter out, @Nonnull EnMember member, Collection<T> 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<T> extends CollectionEncoder<ProtobufWrit
}
first = false;
}
out.writeArrayE();
//out.writeArrayE();
}
protected void convertPrimitivedTo(final ProtobufWriter out, @Nonnull EnMember member, Collection<T> value) {

View File

@@ -27,8 +27,6 @@ public class ProtobufMapEncoder<K, V> extends MapEncoder<ProtobufWriter, K, V>
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<K, V> extends MapEncoder<ProtobufWriter, K, V>
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<K, V> extends MapEncoder<ProtobufWriter, K, V>
BiFunction<K, V, V> 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<K, V> extends MapEncoder<ProtobufWriter, K, V>
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<K, V> extends MapEncoder<ProtobufWriter, K, V>
} 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);

View File

@@ -43,7 +43,7 @@ public class ProtobufStreamEncoder<T> extends StreamEncoder<ProtobufWriter, T>
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<T> extends StreamEncoder<ProtobufWriter, T>
}
first = false;
}
out.writeArrayE();
//out.writeArrayE();
}
protected void convertPrimitivedTo(final ProtobufWriter out, @Nonnull EnMember member, Object[] value) {