diff options
Diffstat (limited to 'java/src/IceInternal/BasicStream.java')
-rw-r--r-- | java/src/IceInternal/BasicStream.java | 322 |
1 files changed, 234 insertions, 88 deletions
diff --git a/java/src/IceInternal/BasicStream.java b/java/src/IceInternal/BasicStream.java index 3ed20b61b90..e8d0483e8fa 100644 --- a/java/src/IceInternal/BasicStream.java +++ b/java/src/IceInternal/BasicStream.java @@ -48,7 +48,6 @@ public class BasicStream _unlimited = unlimited; _startSeq = -1; - _format = _instance.defaultsAndOverrides().defaultFormat; _sizePos = -1; } @@ -142,10 +141,6 @@ public class BasicStream other._minSeqSize = _minSeqSize; _minSeqSize = tmpMinSeqSize; - Ice.FormatType tmpFormat = other._format; - other._format = _format; - _format = tmpFormat; - int tmpSizePos = other._sizePos; other._sizePos = _sizePos; _sizePos = tmpSizePos; @@ -188,15 +183,6 @@ public class BasicStream } public void - format(Ice.FormatType format) - { - if(format != Ice.FormatType.DefaultFormat) - { - _format = format; - } - } - - public void startWriteObject(Ice.SlicedData data) { assert(_writeEncapsStack != null && _writeEncapsStack.encoder != null); @@ -263,16 +249,16 @@ public class BasicStream if(_writeEncapsStack != null) { - startWriteEncaps(_writeEncapsStack.encoding); + startWriteEncaps(_writeEncapsStack.encoding, _writeEncapsStack.format); } else { - startWriteEncaps(_encoding); + startWriteEncaps(_encoding, Ice.FormatType.DefaultFormat); } } public void - startWriteEncaps(Ice.EncodingVersion encoding) + startWriteEncaps(Ice.EncodingVersion encoding, Ice.FormatType format) { Protocol.checkSupportedEncoding(encoding); @@ -289,6 +275,7 @@ public class BasicStream curr.next = _writeEncapsStack; _writeEncapsStack = curr; + _writeEncapsStack.format = format; _writeEncapsStack.setEncoding(encoding); _writeEncapsStack.start = _buf.size(); @@ -822,11 +809,20 @@ public class BasicStream } public void - writeByte(int tag, Ice.Optional<Byte> v) + writeByte(int tag, Ice.ByteOptional v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.F1)) + if(v != null && v.isSet()) { - writeByte(v.get()); + writeByte(tag, v.get()); + } + } + + public void + writeByte(int tag, byte v) + { + if(writeOpt(tag, Ice.OptionalType.F1)) + { + writeByte(v); } } @@ -854,9 +850,18 @@ public class BasicStream public void writeByteSeq(int tag, Ice.Optional<byte[]> v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.VSize)) + if(v != null && v.isSet()) + { + writeByteSeq(tag, v.get()); + } + } + + public void + writeByteSeq(int tag, byte[] v) + { + if(writeOpt(tag, Ice.OptionalType.VSize)) { - writeByteSeq(v.get()); + writeByteSeq(v); } } @@ -896,7 +901,7 @@ public class BasicStream } public void - readByte(int tag, Ice.Optional<Byte> v) + readByte(int tag, Ice.ByteOptional v) { if(readOpt(tag, Ice.OptionalType.F1)) { @@ -965,11 +970,20 @@ public class BasicStream } public void - writeBool(int tag, Ice.Optional<Boolean> v) + writeBool(int tag, Ice.BooleanOptional v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.F1)) + if(v != null && v.isSet()) { - writeBool(v.get()); + writeBool(tag, v.get()); + } + } + + public void + writeBool(int tag, boolean v) + { + if(writeOpt(tag, Ice.OptionalType.F1)) + { + writeBool(v); } } @@ -1000,9 +1014,18 @@ public class BasicStream public void writeBoolSeq(int tag, Ice.Optional<boolean[]> v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.VSize)) + if(v != null && v.isSet()) + { + writeBoolSeq(tag, v.get()); + } + } + + public void + writeBoolSeq(int tag, boolean[] v) + { + if(writeOpt(tag, Ice.OptionalType.VSize)) { - writeBoolSeq(v.get()); + writeBoolSeq(v); } } @@ -1020,7 +1043,7 @@ public class BasicStream } public void - readBool(int tag, Ice.Optional<Boolean> v) + readBool(int tag, Ice.BooleanOptional v) { if(readOpt(tag, Ice.OptionalType.F1)) { @@ -1072,11 +1095,20 @@ public class BasicStream } public void - writeShort(int tag, Ice.Optional<Short> v) + writeShort(int tag, Ice.ShortOptional v) + { + if(v != null && v.isSet()) + { + writeShort(tag, v.get()); + } + } + + public void + writeShort(int tag, short v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.F2)) + if(writeOpt(tag, Ice.OptionalType.F2)) { - writeShort(v.get()); + writeShort(v); } } @@ -1100,11 +1132,19 @@ public class BasicStream public void writeShortSeq(int tag, Ice.Optional<short[]> v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.VSize)) + if(v != null && v.isSet()) { - final short[] arr = v.get(); - writeSize(arr == null || arr.length == 0 ? 1 : arr.length * 2 + (arr.length > 254 ? 5 : 1)); - writeShortSeq(arr); + writeShortSeq(tag, v.get()); + } + } + + public void + writeShortSeq(int tag, short[] v) + { + if(writeOpt(tag, Ice.OptionalType.VSize)) + { + writeSize(v == null || v.length == 0 ? 1 : v.length * 2 + (v.length > 254 ? 5 : 1)); + writeShortSeq(v); } } @@ -1122,7 +1162,7 @@ public class BasicStream } public void - readShort(int tag, Ice.Optional<Short> v) + readShort(int tag, Ice.ShortOptional v) { if(readOpt(tag, Ice.OptionalType.F2)) { @@ -1174,11 +1214,20 @@ public class BasicStream } public void - writeInt(int tag, Ice.Optional<Integer> v) + writeInt(int tag, Ice.IntOptional v) + { + if(v != null && v.isSet()) + { + writeInt(tag, v.get()); + } + } + + public void + writeInt(int tag, int v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.F4)) + if(writeOpt(tag, Ice.OptionalType.F4)) { - writeInt(v.get()); + writeInt(v); } } @@ -1208,11 +1257,19 @@ public class BasicStream public void writeIntSeq(int tag, Ice.Optional<int[]> v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.VSize)) + if(v != null && v.isSet()) { - final int[] arr = v.get(); - writeSize(arr == null || arr.length == 0 ? 1 : arr.length * 4 + (arr.length > 254 ? 5 : 1)); - writeIntSeq(arr); + writeIntSeq(tag, v.get()); + } + } + + public void + writeIntSeq(int tag, int[] v) + { + if(writeOpt(tag, Ice.OptionalType.VSize)) + { + writeSize(v == null || v.length == 0 ? 1 : v.length * 4 + (v.length > 254 ? 5 : 1)); + writeIntSeq(v); } } @@ -1230,7 +1287,7 @@ public class BasicStream } public void - readInt(int tag, Ice.Optional<Integer> v) + readInt(int tag, Ice.IntOptional v) { if(readOpt(tag, Ice.OptionalType.F4)) { @@ -1282,11 +1339,20 @@ public class BasicStream } public void - writeLong(int tag, Ice.Optional<Long> v) + writeLong(int tag, Ice.LongOptional v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.F8)) + if(v != null && v.isSet()) { - writeLong(v.get()); + writeLong(tag, v.get()); + } + } + + public void + writeLong(int tag, long v) + { + if(writeOpt(tag, Ice.OptionalType.F8)) + { + writeLong(v); } } @@ -1310,11 +1376,19 @@ public class BasicStream public void writeLongSeq(int tag, Ice.Optional<long[]> v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.VSize)) + if(v != null && v.isSet()) + { + writeLongSeq(tag, v.get()); + } + } + + public void + writeLongSeq(int tag, long[] v) + { + if(writeOpt(tag, Ice.OptionalType.VSize)) { - final long[] arr = v.get(); - writeSize(arr == null || arr.length == 0 ? 1 : arr.length * 8 + (arr.length > 254 ? 5 : 1)); - writeLongSeq(arr); + writeSize(v == null || v.length == 0 ? 1 : v.length * 8 + (v.length > 254 ? 5 : 1)); + writeLongSeq(v); } } @@ -1332,7 +1406,7 @@ public class BasicStream } public void - readLong(int tag, Ice.Optional<Long> v) + readLong(int tag, Ice.LongOptional v) { if(readOpt(tag, Ice.OptionalType.F8)) { @@ -1384,11 +1458,20 @@ public class BasicStream } public void - writeFloat(int tag, Ice.Optional<Float> v) + writeFloat(int tag, Ice.FloatOptional v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.F4)) + if(v != null && v.isSet()) { - writeFloat(v.get()); + writeFloat(tag, v.get()); + } + } + + public void + writeFloat(int tag, float v) + { + if(writeOpt(tag, Ice.OptionalType.F4)) + { + writeFloat(v); } } @@ -1412,11 +1495,19 @@ public class BasicStream public void writeFloatSeq(int tag, Ice.Optional<float[]> v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.VSize)) + if(v != null && v.isSet()) + { + writeFloatSeq(tag, v.get()); + } + } + + public void + writeFloatSeq(int tag, float[] v) + { + if(writeOpt(tag, Ice.OptionalType.VSize)) { - final float[] arr = v.get(); - writeSize(arr == null || arr.length == 0 ? 1 : arr.length * 4 + (arr.length > 254 ? 5 : 1)); - writeFloatSeq(arr); + writeSize(v == null || v.length == 0 ? 1 : v.length * 4 + (v.length > 254 ? 5 : 1)); + writeFloatSeq(v); } } @@ -1434,7 +1525,7 @@ public class BasicStream } public void - readFloat(int tag, Ice.Optional<Float> v) + readFloat(int tag, Ice.FloatOptional v) { if(readOpt(tag, Ice.OptionalType.F4)) { @@ -1486,11 +1577,20 @@ public class BasicStream } public void - writeDouble(int tag, Ice.Optional<Double> v) + writeDouble(int tag, Ice.DoubleOptional v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.F8)) + if(v != null && v.isSet()) { - writeDouble(v.get()); + writeDouble(tag, v.get()); + } + } + + public void + writeDouble(int tag, double v) + { + if(writeOpt(tag, Ice.OptionalType.F8)) + { + writeDouble(v); } } @@ -1514,11 +1614,19 @@ public class BasicStream public void writeDoubleSeq(int tag, Ice.Optional<double[]> v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.VSize)) + if(v != null && v.isSet()) { - final double[] arr = v.get(); - writeSize(arr == null || arr.length == 0 ? 1 : arr.length * 8 + (arr.length > 254 ? 5 : 1)); - writeDoubleSeq(arr); + writeDoubleSeq(tag, v.get()); + } + } + + public void + writeDoubleSeq(int tag, double[] v) + { + if(writeOpt(tag, Ice.OptionalType.VSize)) + { + writeSize(v == null || v.length == 0 ? 1 : v.length * 8 + (v.length > 254 ? 5 : 1)); + writeDoubleSeq(v); } } @@ -1536,7 +1644,7 @@ public class BasicStream } public void - readDouble(int tag, Ice.Optional<Double> v) + readDouble(int tag, Ice.DoubleOptional v) { if(readOpt(tag, Ice.OptionalType.F8)) { @@ -1649,9 +1757,18 @@ public class BasicStream public void writeString(int tag, Ice.Optional<String> v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.VSize)) + if(v != null && v.isSet()) + { + writeString(tag, v.get()); + } + } + + public void + writeString(int tag, String v) + { + if(writeOpt(tag, Ice.OptionalType.VSize)) { - writeString(v.get()); + writeString(v); } } @@ -1675,10 +1792,19 @@ public class BasicStream public void writeStringSeq(int tag, Ice.Optional<String[]> v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.FSize)) + if(v != null && v.isSet()) + { + writeStringSeq(tag, v.get()); + } + } + + public void + writeStringSeq(int tag, String[] v) + { + if(writeOpt(tag, Ice.OptionalType.FSize)) { startSize(); - writeStringSeq(v.get()); + writeStringSeq(v); endSize(); } } @@ -1809,10 +1935,19 @@ public class BasicStream public void writeProxy(int tag, Ice.Optional<Ice.ObjectPrx> v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.FSize)) + if(v != null && v.isSet()) + { + writeProxy(tag, v.get()); + } + } + + public void + writeProxy(int tag, Ice.ObjectPrx v) + { + if(writeOpt(tag, Ice.OptionalType.FSize)) { startSize(); - writeProxy(v.get()); + writeProxy(v); endSize(); } } @@ -1895,9 +2030,18 @@ public class BasicStream public <T extends Ice.Object> void writeObject(int tag, Ice.Optional<T> v) { - if(v != null && v.isSet() && writeOpt(tag, Ice.OptionalType.Size)) + if(v != null && v.isSet()) + { + writeObject(tag, v.get()); + } + } + + public void + writeObject(int tag, Ice.Object v) + { + if(writeOpt(tag, Ice.OptionalType.Size)) { - writeObject(v.get()); + writeObject(v); } } @@ -3529,11 +3673,10 @@ public class BasicStream private static final class EncapsEncoder { - EncapsEncoder(BasicStream stream, WriteEncaps encaps, Ice.FormatType format) + EncapsEncoder(BasicStream stream, WriteEncaps encaps) { _stream = stream; _encaps = encaps; - _format = format; _sliceType = SliceType.NoSlice; _usesClasses = false; _objectIdIndex = 0; @@ -3562,7 +3705,7 @@ public class BasicStream _stream.writeInt(-index); _usesClasses = true; } - else if(_sliceType != SliceType.NoSlice && _format == Ice.FormatType.SlicedFormat) + else if(_sliceType != SliceType.NoSlice && _encaps.format == Ice.FormatType.SlicedFormat) { // // An object reference that appears inside a slice of an @@ -3674,7 +3817,7 @@ public class BasicStream // Encode the slice size for the old encoding and if using the // sliced format. // - if(_encaps.encoding_1_0 || _format == Ice.FormatType.SlicedFormat) + if(_encaps.encoding_1_0 || _encaps.format == Ice.FormatType.SlicedFormat) { _sliceFlags |= FLAG_HAS_SLICE_SIZE; } @@ -3700,7 +3843,7 @@ public class BasicStream // Encode the type ID (only in the first slice for the compact // encoding). // - if(_format == Ice.FormatType.SlicedFormat || _encaps.encoding_1_0 || _firstSlice) + if(_encaps.format == Ice.FormatType.SlicedFormat || _encaps.encoding_1_0 || _firstSlice) { // // If the type ID has already been seen, write the index @@ -3767,7 +3910,7 @@ public class BasicStream if(!_indirectionTable.isEmpty()) { assert(!_encaps.encoding_1_0); - assert(_format == Ice.FormatType.SlicedFormat); + assert(_encaps.format == Ice.FormatType.SlicedFormat); _sliceFlags |= FLAG_HAS_INDIRECTION_TABLE; // @@ -3899,7 +4042,7 @@ public class BasicStream // using the sliced format. Otherwise, we ignore the preserved slices, which // essentially "slices" the object into the most-derived type known by the sender. // - if(_encaps.encoding_1_0 || _format != Ice.FormatType.SlicedFormat) + if(_encaps.encoding_1_0 || _encaps.format != Ice.FormatType.SlicedFormat) { return; } @@ -3962,7 +4105,6 @@ public class BasicStream private final BasicStream _stream; private final WriteEncaps _encaps; - private final Ice.FormatType _format; // Object/exception attributes private SliceType _sliceType; @@ -4022,6 +4164,7 @@ public class BasicStream } int start; + Ice.FormatType format; Ice.EncodingVersion encoding; boolean encoding_1_0; @@ -4092,9 +4235,14 @@ public class BasicStream _writeEncapsStack.setEncoding(_encoding); } + if(_writeEncapsStack.format == Ice.FormatType.DefaultFormat) + { + _writeEncapsStack.format = _instance.defaultsAndOverrides().defaultFormat; + } + if(_writeEncapsStack.encoder == null) // Lazy initialization. { - _writeEncapsStack.encoder = new EncapsEncoder(this, _writeEncapsStack, _format); + _writeEncapsStack.encoder = new EncapsEncoder(this, _writeEncapsStack); } } @@ -4106,8 +4254,6 @@ public class BasicStream private int _startSeq; private int _minSeqSize; - private Ice.FormatType _format; - private int _sizePos; private static final byte FLAG_HAS_TYPE_ID_STRING = (byte)(1<<0); |