pb
This commit is contained in:
@@ -17,6 +17,7 @@ import org.redkale.convert.*;
|
|||||||
*/
|
*/
|
||||||
public class ProtobufArrayDecoder<T> extends ArrayDecoder<ProtobufReader, T>
|
public class ProtobufArrayDecoder<T> extends ArrayDecoder<ProtobufReader, T>
|
||||||
implements ProtobufTagDecodeable<ProtobufReader, T[]> {
|
implements ProtobufTagDecodeable<ProtobufReader, T[]> {
|
||||||
|
|
||||||
protected final boolean componentPrimitived;
|
protected final boolean componentPrimitived;
|
||||||
|
|
||||||
protected final boolean componentSimpled;
|
protected final boolean componentSimpled;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public class ProtobufArrayEncoder<T> extends ArrayEncoder<ProtobufWriter, T>
|
|||||||
|
|
||||||
protected void convertObjectTo(final ProtobufWriter out, @Nonnull EnMember member, T[] value) {
|
protected void convertObjectTo(final ProtobufWriter out, @Nonnull EnMember member, T[] value) {
|
||||||
ProtobufEncodeable itemEncoder = (ProtobufEncodeable) this.componentEncoder;
|
ProtobufEncodeable itemEncoder = (ProtobufEncodeable) this.componentEncoder;
|
||||||
out.writeArrayB(value.length, itemEncoder, value);
|
//out.writeArrayB(value.length, itemEncoder, value);
|
||||||
boolean first = true;
|
boolean first = true;
|
||||||
for (T item : value) {
|
for (T item : value) {
|
||||||
if (!first) {
|
if (!first) {
|
||||||
@@ -55,7 +55,7 @@ public class ProtobufArrayEncoder<T> extends ArrayEncoder<ProtobufWriter, T>
|
|||||||
}
|
}
|
||||||
first = false;
|
first = false;
|
||||||
}
|
}
|
||||||
out.writeArrayE();
|
//out.writeArrayE();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void convertPrimitivedTo(final ProtobufWriter out, @Nonnull EnMember member, T[] value) {
|
protected void convertPrimitivedTo(final ProtobufWriter out, @Nonnull EnMember member, T[] value) {
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ import org.redkale.util.ByteTuple;
|
|||||||
*/
|
*/
|
||||||
public class ProtobufBytesWriter extends ProtobufWriter {
|
public class ProtobufBytesWriter extends ProtobufWriter {
|
||||||
|
|
||||||
|
private static final int RESET_MAX_SIZE = DEFAULT_SIZE << 4;
|
||||||
|
|
||||||
byte[] content;
|
byte[] content;
|
||||||
|
|
||||||
// 链表结构
|
// 链表结构
|
||||||
@@ -60,7 +62,7 @@ public class ProtobufBytesWriter extends ProtobufWriter {
|
|||||||
} while (p != this);
|
} while (p != this);
|
||||||
}
|
}
|
||||||
this.delegate = null;
|
this.delegate = null;
|
||||||
if (this.content.length > DEFAULT_SIZE) {
|
if (this.content.length > RESET_MAX_SIZE) {
|
||||||
this.content = new byte[DEFAULT_SIZE];
|
this.content = new byte[DEFAULT_SIZE];
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -82,7 +84,7 @@ public class ProtobufBytesWriter extends ProtobufWriter {
|
|||||||
}
|
}
|
||||||
ProtobufBytesWriter result = queue.poll();
|
ProtobufBytesWriter result = queue.poll();
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
result = new ProtobufBytesWriter(new byte[256], 0);
|
result = new ProtobufBytesWriter(new byte[DEFAULT_SIZE], 0);
|
||||||
}
|
}
|
||||||
if (delegate == null) {
|
if (delegate == null) {
|
||||||
result.parent = this;
|
result.parent = this;
|
||||||
@@ -171,7 +173,7 @@ public class ProtobufBytesWriter extends ProtobufWriter {
|
|||||||
protected int expand(int len) {
|
protected int expand(int len) {
|
||||||
int newcount = count + len;
|
int newcount = count + len;
|
||||||
if (newcount > content.length) {
|
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);
|
System.arraycopy(content, 0, newdata, 0, count);
|
||||||
this.content = newdata;
|
this.content = newdata;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,34 +12,7 @@ import java.net.InetSocketAddress;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.atomic.*;
|
import java.util.concurrent.atomic.*;
|
||||||
import org.redkale.convert.SimpledCoder;
|
import org.redkale.convert.SimpledCoder;
|
||||||
import org.redkale.convert.ext.AtomicBooleanSimpledCoder;
|
import org.redkale.convert.ext.*;
|
||||||
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.util.*;
|
import org.redkale.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -348,7 +321,7 @@ public abstract class ProtobufCoders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class ProtobufStringBuilderSimpledCoder
|
public static class ProtobufStringBuilderSimpledCoder
|
||||||
extends StringBuilderSimpledCoder<ProtobufReader, ProtobufWriter>
|
extends CharSequenceSimpledCoder.StringBuilderSimpledCoder<ProtobufReader, ProtobufWriter>
|
||||||
implements ProtobufEncodeable<ProtobufWriter, StringBuilder> {
|
implements ProtobufEncodeable<ProtobufWriter, StringBuilder> {
|
||||||
|
|
||||||
public static final ProtobufStringBuilderSimpledCoder instance = new ProtobufStringBuilderSimpledCoder();
|
public static final ProtobufStringBuilderSimpledCoder instance = new ProtobufStringBuilderSimpledCoder();
|
||||||
@@ -668,7 +641,7 @@ public abstract class ProtobufCoders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class ProtobufInetSocketAddressSimpledCoder
|
public static class ProtobufInetSocketAddressSimpledCoder
|
||||||
extends InetSocketAddressSimpledCoder<ProtobufReader, ProtobufWriter>
|
extends InetAddressSimpledCoder.InetSocketAddressSimpledCoder<ProtobufReader, ProtobufWriter>
|
||||||
implements ProtobufEncodeable<ProtobufWriter, InetSocketAddress> {
|
implements ProtobufEncodeable<ProtobufWriter, InetSocketAddress> {
|
||||||
|
|
||||||
public static final ProtobufInetSocketAddressSimpledCoder instance =
|
public static final ProtobufInetSocketAddressSimpledCoder instance =
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public class ProtobufCollectionEncoder<T> extends CollectionEncoder<ProtobufWrit
|
|||||||
|
|
||||||
protected void convertObjectTo(final ProtobufWriter out, @Nonnull EnMember member, Collection<T> value) {
|
protected void convertObjectTo(final ProtobufWriter out, @Nonnull EnMember member, Collection<T> value) {
|
||||||
ProtobufEncodeable itemEncoder = (ProtobufEncodeable) this.componentEncoder;
|
ProtobufEncodeable itemEncoder = (ProtobufEncodeable) this.componentEncoder;
|
||||||
out.writeArrayB(value.size(), itemEncoder, value);
|
//out.writeArrayB(value.size(), itemEncoder, value);
|
||||||
boolean first = true;
|
boolean first = true;
|
||||||
for (T item : value) {
|
for (T item : value) {
|
||||||
if (!first) {
|
if (!first) {
|
||||||
@@ -55,7 +55,7 @@ public class ProtobufCollectionEncoder<T> extends CollectionEncoder<ProtobufWrit
|
|||||||
}
|
}
|
||||||
first = false;
|
first = false;
|
||||||
}
|
}
|
||||||
out.writeArrayE();
|
//out.writeArrayE();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void convertPrimitivedTo(final ProtobufWriter out, @Nonnull EnMember member, Collection<T> value) {
|
protected void convertPrimitivedTo(final ProtobufWriter out, @Nonnull EnMember member, Collection<T> value) {
|
||||||
|
|||||||
@@ -27,8 +27,6 @@ public class ProtobufMapEncoder<K, V> extends MapEncoder<ProtobufWriter, K, V>
|
|||||||
private final EnMember keyMember;
|
private final EnMember keyMember;
|
||||||
|
|
||||||
private final EnMember valueMember;
|
private final EnMember valueMember;
|
||||||
private final boolean keySimpled;
|
|
||||||
private final boolean valueSimpled;
|
|
||||||
|
|
||||||
public ProtobufMapEncoder(ConvertFactory factory, Type type) {
|
public ProtobufMapEncoder(ConvertFactory factory, Type type) {
|
||||||
super(factory, 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));
|
setTag(valueMember, ProtobufFactory.getTag("value", valueEncoder.getType(), 2, enumtostring));
|
||||||
setTagSize(keyMember, ProtobufFactory.computeSInt32SizeNoTag(keyMember.getTag()));
|
setTagSize(keyMember, ProtobufFactory.computeSInt32SizeNoTag(keyMember.getTag()));
|
||||||
setTagSize(valueMember, ProtobufFactory.computeSInt32SizeNoTag(valueMember.getTag()));
|
setTagSize(valueMember, ProtobufFactory.computeSInt32SizeNoTag(valueMember.getTag()));
|
||||||
this.keySimpled = keyEncoder instanceof SimpledCoder;
|
|
||||||
this.valueSimpled = valueEncoder instanceof SimpledCoder;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -55,7 +51,7 @@ public class ProtobufMapEncoder<K, V> extends MapEncoder<ProtobufWriter, K, V>
|
|||||||
BiFunction<K, V, V> mapFieldFunc = out.mapFieldFunc();
|
BiFunction<K, V, V> mapFieldFunc = out.mapFieldFunc();
|
||||||
ProtobufEncodeable kencoder = (ProtobufEncodeable) this.keyEncoder;
|
ProtobufEncodeable kencoder = (ProtobufEncodeable) this.keyEncoder;
|
||||||
ProtobufEncodeable vencoder = (ProtobufEncodeable) this.valueEncoder;
|
ProtobufEncodeable vencoder = (ProtobufEncodeable) this.valueEncoder;
|
||||||
out.writeMapB(values.size(), kencoder, vencoder, value);
|
//out.writeMapB(values.size(), kencoder, vencoder, value);
|
||||||
AtomicBoolean first = new AtomicBoolean(true);
|
AtomicBoolean first = new AtomicBoolean(true);
|
||||||
values.forEach((key, val0) -> {
|
values.forEach((key, val0) -> {
|
||||||
if (ignoreColumns == null || !ignoreColumns.contains(key.toString())) {
|
if (ignoreColumns == null || !ignoreColumns.contains(key.toString())) {
|
||||||
@@ -63,11 +59,7 @@ public class ProtobufMapEncoder<K, V> extends MapEncoder<ProtobufWriter, K, V>
|
|||||||
if (!first.get()) {
|
if (!first.get()) {
|
||||||
out.writeField(member);
|
out.writeField(member);
|
||||||
}
|
}
|
||||||
boolean poll = true;
|
ProtobufWriter subout = out.pollChild();
|
||||||
ProtobufWriter subout = poll ? out.pollChild() : out;
|
|
||||||
if (!poll) {
|
|
||||||
subout.writeLength(computeSize(out, key, val));
|
|
||||||
}
|
|
||||||
subout.writeTag(keyMember.getTag());
|
subout.writeTag(keyMember.getTag());
|
||||||
if (key == null) {
|
if (key == null) {
|
||||||
subout.writeLength(0);
|
subout.writeLength(0);
|
||||||
@@ -80,16 +72,14 @@ public class ProtobufMapEncoder<K, V> extends MapEncoder<ProtobufWriter, K, V>
|
|||||||
} else {
|
} else {
|
||||||
vencoder.convertTo(subout, valueMember, val);
|
vencoder.convertTo(subout, valueMember, val);
|
||||||
}
|
}
|
||||||
if (poll) {
|
out.offerChild(subout);
|
||||||
out.offerChild(subout);
|
|
||||||
}
|
|
||||||
first.set(false);
|
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 kencoder = (ProtobufEncodeable) this.keyEncoder;
|
||||||
ProtobufEncodeable vencoder = (ProtobufEncodeable) this.valueEncoder;
|
ProtobufEncodeable vencoder = (ProtobufEncodeable) this.valueEncoder;
|
||||||
int keySize = kencoder.computeSize(out, keyMember.getTagSize(), key);
|
int keySize = kencoder.computeSize(out, keyMember.getTagSize(), key);
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public class ProtobufStreamEncoder<T> extends StreamEncoder<ProtobufWriter, T>
|
|||||||
|
|
||||||
protected void convertObjectTo(final ProtobufWriter out, @Nonnull EnMember member, Object[] value) {
|
protected void convertObjectTo(final ProtobufWriter out, @Nonnull EnMember member, Object[] value) {
|
||||||
ProtobufEncodeable itemEncoder = (ProtobufEncodeable) this.componentEncoder;
|
ProtobufEncodeable itemEncoder = (ProtobufEncodeable) this.componentEncoder;
|
||||||
out.writeArrayB(value.length, itemEncoder, value);
|
//out.writeArrayB(value.length, itemEncoder, value);
|
||||||
boolean first = true;
|
boolean first = true;
|
||||||
for (Object item : value) {
|
for (Object item : value) {
|
||||||
if (!first) {
|
if (!first) {
|
||||||
@@ -56,7 +56,7 @@ public class ProtobufStreamEncoder<T> extends StreamEncoder<ProtobufWriter, T>
|
|||||||
}
|
}
|
||||||
first = false;
|
first = false;
|
||||||
}
|
}
|
||||||
out.writeArrayE();
|
//out.writeArrayE();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void convertPrimitivedTo(final ProtobufWriter out, @Nonnull EnMember member, Object[] value) {
|
protected void convertPrimitivedTo(final ProtobufWriter out, @Nonnull EnMember member, Object[] value) {
|
||||||
|
|||||||
Reference in New Issue
Block a user