Repository: ignite Updated Branches: refs/heads/ignite-1753-1282 c176f07d9 -> e6f04883d
IGNITE-1862: Removed "convertString" flag and fixed string serialization in CPP. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/80be22b5 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/80be22b5 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/80be22b5 Branch: refs/heads/ignite-1753-1282 Commit: 80be22b52daab79216e90d3b7e88a8d2b56d3e0b Parents: 1a01ad8 Author: vozerov-gridgain <voze...@gridgain.com> Authored: Mon Nov 9 12:31:00 2015 +0300 Committer: vozerov-gridgain <voze...@gridgain.com> Committed: Mon Nov 9 12:31:00 2015 +0300 ---------------------------------------------------------------------- .../internal/portable/BinaryObjectImpl.java | 14 ++-------- .../portable/BinaryObjectOffheapImpl.java | 16 +++-------- .../internal/portable/BinaryReaderExImpl.java | 18 +++++-------- .../internal/portable/BinaryWriterExImpl.java | 19 +++---------- .../internal/portable/PortableContext.java | 11 -------- .../portable/builder/PortableBuilderReader.java | 20 +++----------- .../marshaller/portable/PortableMarshaller.java | 25 ----------------- .../portable/BinaryFieldsAbstractSelfTest.java | 19 ++----------- ...idBinaryObjectBuilderAdditionalSelfTest.java | 9 ------- .../GridBinaryObjectBuilderSelfTest.java | 9 ------- ...tBuilderStringAsCharsAdditionalSelfTest.java | 28 -------------------- ...inaryObjectBuilderStringAsCharsSelfTest.java | 28 -------------------- .../IgnitePortableObjectsTestSuite.java | 4 --- .../ignite/impl/portable/portable_reader_impl.h | 13 ++------- .../src/impl/portable/portable_reader_impl.cpp | 19 +++---------- .../core/src/impl/portable/portable_utils.cpp | 5 +--- .../src/impl/portable/portable_writer_impl.cpp | 7 +---- .../Impl/Portable/PortableUtils.cs | 13 ++------- 18 files changed, 29 insertions(+), 248 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectImpl.java index 6412b7f..800ca40 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectImpl.java @@ -337,19 +337,9 @@ public final class BinaryObjectImpl extends BinaryObjectEx implements Externaliz break; case STRING: { - boolean utf = PortablePrimitives.readBoolean(arr, fieldPos + 1); + int dataLen = PortablePrimitives.readInt(arr, fieldPos + 1); - if (utf) { - int dataLen = PortablePrimitives.readInt(arr, fieldPos + 2); - - val = new String(arr, fieldPos + 6, dataLen, UTF_8); - } - else { - int dataLen = PortablePrimitives.readInt(arr, fieldPos + 2); - char[] data = PortablePrimitives.readCharArray(arr, fieldPos + 6, dataLen); - - val = String.valueOf(data); - } + val = new String(arr, fieldPos + 5, dataLen, UTF_8); break; } http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectOffheapImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectOffheapImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectOffheapImpl.java index e53e9fb..9b6735f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectOffheapImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectOffheapImpl.java @@ -269,20 +269,10 @@ public class BinaryObjectOffheapImpl extends BinaryObjectEx implements Externali break; case STRING: { - boolean utf = PortablePrimitives.readBoolean(ptr, fieldPos + 1); + int dataLen = PortablePrimitives.readInt(ptr, fieldPos + 1); + byte[] data = PortablePrimitives.readByteArray(ptr, fieldPos + 5, dataLen); - if (utf) { - int dataLen = PortablePrimitives.readInt(ptr, fieldPos + 2); - byte[] data = PortablePrimitives.readByteArray(ptr, fieldPos + 6, dataLen); - - val = new String(data, UTF_8); - } - else { - int dataLen = PortablePrimitives.readInt(ptr, fieldPos + 2); - char[] data = PortablePrimitives.readCharArray(ptr, fieldPos + 6, dataLen); - - val = String.valueOf(data); - } + val = new String(data, UTF_8); break; } http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryReaderExImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryReaderExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryReaderExImpl.java index 5ec981b..00eb3e1 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryReaderExImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryReaderExImpl.java @@ -1658,21 +1658,17 @@ public class BinaryReaderExImpl implements BinaryReader, BinaryRawReaderEx, Obje * @return Value. */ private String doReadString() { - if (in.readBoolean()) { - if (!in.hasArray()) - return new String(doReadByteArray(), UTF_8); + if (!in.hasArray()) + return new String(doReadByteArray(), UTF_8); - int strLen = in.readInt(); - int strOff = in.position(); + int strLen = in.readInt(); + int strOff = in.position(); - String res = new String(in.array(), strOff, strLen, UTF_8); + String res = new String(in.array(), strOff, strLen, UTF_8); - in.position(in.position() + strLen); + in.position(in.position() + strLen); - return res; - } - else - return String.valueOf(doReadCharArray()); + return res; } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryWriterExImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryWriterExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryWriterExImpl.java index ef3ef2f..6b4d0b5 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryWriterExImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryWriterExImpl.java @@ -500,24 +500,11 @@ public class BinaryWriterExImpl implements BinaryWriter, BinaryRawWriterEx, Obje else { doWriteByte(STRING); - if (ctx.isConvertString()) { - doWriteBoolean(true); + byte[] strArr = val.getBytes(UTF_8); - byte[] strArr = val.getBytes(UTF_8); + doWriteInt(strArr.length); - doWriteInt(strArr.length); - - out.writeByteArray(strArr); - } - else { - doWriteBoolean(false); - - char[] strArr = val.toCharArray(); - - doWriteInt(strArr.length); - - out.writeCharArray(strArr); - } + out.writeByteArray(strArr); } } http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java index 8c42624..54a180b 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java @@ -149,9 +149,6 @@ public class PortableContext implements Externalizable { private final OptimizedMarshaller optmMarsh = new OptimizedMarshaller(); /** */ - private boolean convertStrings; - - /** */ private boolean keepDeserialized; /** Object schemas. */ @@ -253,7 +250,6 @@ public class PortableContext implements Externalizable { if (marsh == null) return; - convertStrings = marsh.isConvertStringToBytes(); keepDeserialized = marsh.isKeepDeserialized(); marshCtx = marsh.getContext(); @@ -836,13 +832,6 @@ public class PortableContext implements Externalizable { } /** - * @return Whether to convert string to UTF8 bytes. - */ - public boolean isConvertString() { - return convertStrings; - } - - /** * Get schema registry for type ID. * * @param typeId Type ID. http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java index d2a3ac2..5c6a131 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java @@ -151,11 +151,7 @@ public class PortableBuilderReader implements PortablePositionReadable { * @return String length. */ public int readStringLength() { - boolean utf = PortablePrimitives.readBoolean(arr, pos); - - int arrLen = PortablePrimitives.readInt(arr, pos + 1); - - return 1 + (utf ? arrLen : arrLen << 1); + return PortablePrimitives.readInt(arr, pos); } /** @@ -172,21 +168,11 @@ public class PortableBuilderReader implements PortablePositionReadable { if (flag != STRING) throw new BinaryObjectException("Failed to deserialize String."); - boolean convert = readBoolean(); int len = readInt(); - String str; - - if (convert) { - str = new String(arr, pos, len, UTF_8); + String str = new String(arr, pos, len, UTF_8); - pos += len; - } - else { - str = String.valueOf(PortablePrimitives.readCharArray(arr, pos, len)); - - pos += len << 1; - } + pos += len; return str; } http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/core/src/main/java/org/apache/ignite/marshaller/portable/PortableMarshaller.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/portable/PortableMarshaller.java b/modules/core/src/main/java/org/apache/ignite/marshaller/portable/PortableMarshaller.java index 4a1b0ad..2bbf9f8 100644 --- a/modules/core/src/main/java/org/apache/ignite/marshaller/portable/PortableMarshaller.java +++ b/modules/core/src/main/java/org/apache/ignite/marshaller/portable/PortableMarshaller.java @@ -87,9 +87,6 @@ public class PortableMarshaller extends AbstractMarshaller { /** Types. */ private Collection<BinaryTypeConfiguration> typeCfgs; - /** Whether to convert string to bytes using UTF-8 encoding. */ - private boolean convertString = true; - /** Keep deserialized flag. */ private boolean keepDeserialized = true; @@ -172,28 +169,6 @@ public class PortableMarshaller extends AbstractMarshaller { } /** - * Gets strings must be converted to or from bytes using UTF-8 encoding. - * <p> - * Default value is {@code true}. - * - * @return Flag indicating whether string must be converted to byte array using UTF-8 encoding. - */ - public boolean isConvertStringToBytes() { - return convertString; - } - - /** - * Sets strings must be converted to or from bytes using UTF-8 encoding. - * <p> - * Default value is {@code true}. - * - * @param convertString Flag indicating whether string must be converted to byte array using UTF-8 encoding. - */ - public void setConvertStringToBytes(boolean convertString) { - this.convertString = convertString; - } - - /** * If {@code true}, {@link org.apache.ignite.binary.BinaryObject} will cache deserialized instance after * {@link org.apache.ignite.binary.BinaryObject#deserialize()} is called. All consequent calls of this * method on the same instance of {@link org.apache.ignite.binary.BinaryObject} will return that cached http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/core/src/test/java/org/apache/ignite/internal/portable/BinaryFieldsAbstractSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/portable/BinaryFieldsAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/portable/BinaryFieldsAbstractSelfTest.java index 1db3f0b..4fa80b4 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/portable/BinaryFieldsAbstractSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/portable/BinaryFieldsAbstractSelfTest.java @@ -55,17 +55,14 @@ public abstract class BinaryFieldsAbstractSelfTest extends GridCommonAbstractTes /** * Create marshaller. * - * @param stringAsBytes Whether to marshal strings as bytes (UTF8). * @return Portable marshaller. * @throws Exception If failed. */ - protected static PortableMarshaller createMarshaller(boolean stringAsBytes) throws Exception { + protected static PortableMarshaller createMarshaller() throws Exception { PortableContext ctx = new PortableContext(META_HND, new IgniteConfiguration()); PortableMarshaller marsh = new PortableMarshaller(); - marsh.setConvertStringToBytes(stringAsBytes); - marsh.setTypeConfigurations(Arrays.asList( new BinaryTypeConfiguration(TestObject.class.getName()), new BinaryTypeConfiguration(TestOuterObject.class.getName()), @@ -95,7 +92,7 @@ public abstract class BinaryFieldsAbstractSelfTest extends GridCommonAbstractTes @Override protected void beforeTest() throws Exception { super.beforeTest(); - dfltMarsh = createMarshaller(true); + dfltMarsh = createMarshaller(); } /** @@ -252,18 +249,6 @@ public abstract class BinaryFieldsAbstractSelfTest extends GridCommonAbstractTes } /** - * Test string field. - * - * @throws Exception If failed. - */ - public void testStringAsChars() throws Exception { - PortableMarshaller marsh = createMarshaller(false); - - checkNormal(marsh, "fString", true); - checkNested(marsh, "fString", true); - } - - /** * Test string array field. * * @throws Exception If failed. http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderAdditionalSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderAdditionalSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderAdditionalSelfTest.java index 039ae3d..e62d12e 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderAdditionalSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderAdditionalSelfTest.java @@ -82,8 +82,6 @@ public class GridBinaryObjectBuilderAdditionalSelfTest extends GridCommonAbstrac marsh.setClassNames(Arrays.asList("org.apache.ignite.internal.portable.mutabletest.*")); - marsh.setConvertStringToBytes(useUtf8()); - cfg.setMarshaller(marsh); return cfg; @@ -105,13 +103,6 @@ public class GridBinaryObjectBuilderAdditionalSelfTest extends GridCommonAbstrac } /** - * @return Whether to use UTF8 strings. - */ - protected boolean useUtf8() { - return true; - } - - /** * @return Portables API. */ protected IgniteBinary portables() { http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderSelfTest.java index 925a61c..459a7ab 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderSelfTest.java @@ -83,8 +83,6 @@ public class GridBinaryObjectBuilderSelfTest extends GridCommonAbstractTest { marsh.setTypeConfigurations(Collections.singleton(customIdMapper)); - marsh.setConvertStringToBytes(useUtf8()); - cfg.setMarshaller(marsh); return cfg; @@ -101,13 +99,6 @@ public class GridBinaryObjectBuilderSelfTest extends GridCommonAbstractTest { } /** - * @return Whether to use UTF8 strings. - */ - protected boolean useUtf8() { - return true; - } - - /** * */ public void testAllFieldsSerialization() { http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderStringAsCharsAdditionalSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderStringAsCharsAdditionalSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderStringAsCharsAdditionalSelfTest.java deleted file mode 100644 index e9eb92c..0000000 --- a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderStringAsCharsAdditionalSelfTest.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.portable; - -/** - * - */ -public class GridBinaryObjectBuilderStringAsCharsAdditionalSelfTest extends GridBinaryObjectBuilderAdditionalSelfTest { - /** {@inheritDoc} */ - @Override protected boolean useUtf8() { - return false; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderStringAsCharsSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderStringAsCharsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderStringAsCharsSelfTest.java deleted file mode 100644 index 050dc66..0000000 --- a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridBinaryObjectBuilderStringAsCharsSelfTest.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.portable; - -/** - * Portable builder test. - */ -public class GridBinaryObjectBuilderStringAsCharsSelfTest extends GridBinaryObjectBuilderSelfTest { - /** {@inheritDoc} */ - @Override protected boolean useUtf8() { - return false; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePortableObjectsTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePortableObjectsTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePortableObjectsTestSuite.java index 1231ef9..4fe8633 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePortableObjectsTestSuite.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePortableObjectsTestSuite.java @@ -21,8 +21,6 @@ import junit.framework.TestSuite; import org.apache.ignite.internal.portable.GridPortableAffinityKeySelfTest; import org.apache.ignite.internal.portable.GridBinaryObjectBuilderAdditionalSelfTest; import org.apache.ignite.internal.portable.GridBinaryObjectBuilderSelfTest; -import org.apache.ignite.internal.portable.GridBinaryObjectBuilderStringAsCharsAdditionalSelfTest; -import org.apache.ignite.internal.portable.GridBinaryObjectBuilderStringAsCharsSelfTest; import org.apache.ignite.internal.portable.GridPortableMarshallerCtxDisabledSelfTest; import org.apache.ignite.internal.portable.GridPortableMarshallerSelfTest; import org.apache.ignite.internal.portable.GridPortableMetaDataSelfTest; @@ -62,9 +60,7 @@ public class IgnitePortableObjectsTestSuite extends TestSuite { suite.addTestSuite(GridPortableMarshallerSelfTest.class); suite.addTestSuite(GridPortableMarshallerCtxDisabledSelfTest.class); suite.addTestSuite(GridBinaryObjectBuilderSelfTest.class); - suite.addTestSuite(GridBinaryObjectBuilderStringAsCharsSelfTest.class); suite.addTestSuite(GridBinaryObjectBuilderAdditionalSelfTest.class); - suite.addTestSuite(GridBinaryObjectBuilderStringAsCharsAdditionalSelfTest.class); suite.addTestSuite(BinaryFieldsHeapSelfTest.class); suite.addTestSuite(BinaryFieldsOffheapSelfTest.class); suite.addTestSuite(PortableCompactOffsetsHeapSelfTest.class); http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/platforms/cpp/core/include/ignite/impl/portable/portable_reader_impl.h ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_reader_impl.h b/modules/platforms/cpp/core/include/ignite/impl/portable/portable_reader_impl.h index 4762fff..ec1c003 100644 --- a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_reader_impl.h +++ b/modules/platforms/cpp/core/include/ignite/impl/portable/portable_reader_impl.h @@ -1284,21 +1284,12 @@ namespace ignite if (typeId == IGNITE_TYPE_STRING) { - bool utf8Mode = stream->ReadBool(); int32_t realLen = stream->ReadInt32(); ignite::impl::utils::SafeArray<char> arr(realLen + 1); - if (utf8Mode) - { - for (int i = 0; i < realLen; i++) - *(arr.target + i) = static_cast<char>(stream->ReadInt8()); - } - else - { - for (int i = 0; i < realLen; i++) - *(arr.target + i) = static_cast<char>(stream->ReadUInt16()); - } + for (int i = 0; i < realLen; i++) + *(arr.target + i) = static_cast<char>(stream->ReadInt8()); *(arr.target + realLen) = 0; http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/platforms/cpp/core/src/impl/portable/portable_reader_impl.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/core/src/impl/portable/portable_reader_impl.cpp b/modules/platforms/cpp/core/src/impl/portable/portable_reader_impl.cpp index fd2cc18..37e8a22 100644 --- a/modules/platforms/cpp/core/src/impl/portable/portable_reader_impl.cpp +++ b/modules/platforms/cpp/core/src/impl/portable/portable_reader_impl.cpp @@ -249,8 +249,6 @@ namespace ignite CheckRawMode(false); CheckSingleMode(true); - int32_t pos = stream->Position(); - int32_t fieldId = idRslvr->GetFieldId(typeId, fieldName); int32_t fieldPos = FindField(fieldId); @@ -283,8 +281,6 @@ namespace ignite CheckRawMode(false); CheckSingleMode(true); - int32_t pos = stream->Position(); - int32_t fieldId = idRslvr->GetFieldId(typeId, fieldName); int32_t fieldPos = FindField(fieldId); @@ -347,26 +343,17 @@ namespace ignite int8_t hdr = stream->ReadInt8(); if (hdr == IGNITE_TYPE_STRING) { - bool utf8Mode = stream->ReadBool(); int32_t realLen = stream->ReadInt32(); if (res && len >= realLen) { - if (utf8Mode) - { - for (int i = 0; i < realLen; i++) - *(res + i) = static_cast<char>(stream->ReadInt8()); - } - else - { - for (int i = 0; i < realLen; i++) - *(res + i) = static_cast<char>(stream->ReadUInt16()); - } + for (int i = 0; i < realLen; i++) + *(res + i) = static_cast<char>(stream->ReadInt8()); if (len > realLen) *(res + realLen) = 0; // Set NULL terminator if possible. } else - stream->Position(stream->Position() - 6); + stream->Position(stream->Position() - 4 - 1); return realLen; } http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/platforms/cpp/core/src/impl/portable/portable_utils.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/core/src/impl/portable/portable_utils.cpp b/modules/platforms/cpp/core/src/impl/portable/portable_utils.cpp index 2f9c259..f65abd0 100644 --- a/modules/platforms/cpp/core/src/impl/portable/portable_utils.cpp +++ b/modules/platforms/cpp/core/src/impl/portable/portable_utils.cpp @@ -203,11 +203,8 @@ namespace ignite void PortableUtils::WriteString(interop::InteropOutputStream* stream, const char* val, const int32_t len) { - stream->WriteBool(false); stream->WriteInt32(len); - - for (int i = 0; i < len; i++) - stream->WriteUInt16(*(val + i)); + stream->WriteInt8Array(reinterpret_cast<const int8_t*>(val), len); } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/platforms/cpp/core/src/impl/portable/portable_writer_impl.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/core/src/impl/portable/portable_writer_impl.cpp b/modules/platforms/cpp/core/src/impl/portable/portable_writer_impl.cpp index 2dac125..f398f04 100644 --- a/modules/platforms/cpp/core/src/impl/portable/portable_writer_impl.cpp +++ b/modules/platforms/cpp/core/src/impl/portable/portable_writer_impl.cpp @@ -298,16 +298,11 @@ namespace ignite if (val) { stream->WriteInt8(IGNITE_TYPE_STRING); - stream->WriteBool(false); - stream->WriteInt32(len); - for (int i = 0; i < len; i++) - stream->WriteUInt16(*(val + i)); + PortableUtils::WriteString(stream, val, len); } else - { stream->WriteInt8(IGNITE_HDR_NULL); - } } int32_t PortableWriterImpl::WriteStringArray() http://git-wip-us.apache.org/repos/asf/ignite/blob/80be22b5/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableUtils.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableUtils.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableUtils.cs index 1255ae3..773ec23 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableUtils.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableUtils.cs @@ -650,8 +650,6 @@ namespace Apache.Ignite.Core.Impl.Portable */ public static unsafe void WriteString(string val, IPortableStream stream) { - stream.WriteBool(true); - int charCnt = val.Length; fixed (char* chars = val) @@ -671,16 +669,9 @@ namespace Apache.Ignite.Core.Impl.Portable */ public static string ReadString(IPortableStream stream) { - if (stream.ReadBool()) - { - byte[] bytes = ReadByteArray(stream); - - return bytes != null ? Utf8.GetString(bytes) : null; - } - - char[] chars = ReadCharArray(stream); + byte[] bytes = ReadByteArray(stream); - return new string(chars); + return bytes != null ? Utf8.GetString(bytes) : null; } /**