You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2015/10/27 15:32:07 UTC
[02/11] ignite git commit: IGNITE-1770: Read raw-only flag.
IGNITE-1770: Read raw-only flag.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ea23354e
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ea23354e
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ea23354e
Branch: refs/heads/ignite-1770
Commit: ea23354ea602f3ed935522f0c5986b44654ae923
Parents: 39cc376
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 15:36:52 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 15:36:52 2015 +0300
----------------------------------------------------------------------
.../portable/PortablePositionReadable.java | 8 ++++++++
.../ignite/internal/portable/PortableUtils.java | 5 +++--
.../portable/builder/PortableBuilderReader.java | 12 +++++++-----
.../streams/PortableAbstractInputStream.java | 18 ++++++++++++++++++
.../portable/streams/PortableHeapInputStream.java | 10 ++++++++++
.../streams/PortableOffheapInputStream.java | 10 ++++++++++
.../memory/PlatformBigEndianInputStreamImpl.java | 5 +++++
.../platform/memory/PlatformInputStreamImpl.java | 10 ++++++++++
8 files changed, 71 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/portable/PortablePositionReadable.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortablePositionReadable.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortablePositionReadable.java
index 8536f70..7e8d9d3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortablePositionReadable.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortablePositionReadable.java
@@ -22,6 +22,14 @@ package org.apache.ignite.internal.portable;
*/
public interface PortablePositionReadable {
/**
+ * Read short at the given position.
+ *
+ * @param pos Position.
+ * @return Value.
+ */
+ public short readShortPositioned(int pos);
+
+ /**
* Read integer at the given position.
*
* @param pos Position.
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
index 56b81af..823b0e1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
@@ -626,9 +626,10 @@ public class PortableUtils {
*/
public static int rawOffsetAbsolute(PortablePositionReadable in, int start) {
int len = length(in, start);
- int schemaId = in.readIntPositioned(start + GridPortableMarshaller.SCHEMA_ID_POS);
- if (schemaId == 0)
+ short flags = in.readShortPositioned(start + GridPortableMarshaller.FLAGS_POS);
+
+ if (PortableUtils.isRawOnly(flags))
// No schema, raw offset is located on schema offset position.
return in.readIntPositioned(start + GridPortableMarshaller.SCHEMA_OR_RAW_OFF_POS);
else {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/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 ab3c2a6..b999cde 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
@@ -131,11 +131,13 @@ public class PortableBuilderReader implements PortablePositionReadable {
return PRIM.readByte(arr, pos);
}
- /**
- * @param pos Position in the source array.
- * @return Read int value.
- */
- public int readIntPositioned(int pos) {
+ /** {@inheritDoc} */
+ @Override public short readShortPositioned(int pos) {
+ return PRIM.readShort(arr, pos);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int readIntPositioned(int pos) {
return PRIM.readInt(arr, pos);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java
index 00d5658..7dbee92 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java
@@ -158,6 +158,16 @@ public abstract class PortableAbstractInputStream extends PortableAbstractStream
}
/** {@inheritDoc} */
+ @Override public short readShortPositioned(int pos) {
+ int delta = pos + 2 - this.pos;
+
+ if (delta > 0)
+ ensureEnoughData(delta);
+
+ return readShortPositioned0(pos);
+ }
+
+ /** {@inheritDoc} */
@Override public int readIntPositioned(int pos) {
int delta = pos + 4 - this.pos;
@@ -334,6 +344,14 @@ public abstract class PortableAbstractInputStream extends PortableAbstractStream
protected abstract long readLongFast();
/**
+ * Internal routine for positioned short value read.
+ *
+ * @param pos Position.
+ * @return Int value.
+ */
+ protected abstract short readShortPositioned0(int pos);
+
+ /**
* Internal routine for positioned int value read.
*
* @param pos Position.
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java
index d5618b3..adfeaad 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java
@@ -123,6 +123,16 @@ public final class PortableHeapInputStream extends PortableAbstractInputStream {
}
/** {@inheritDoc} */
+ @Override protected short readShortPositioned0(int pos) {
+ short res = UNSAFE.getShort(data, BYTE_ARR_OFF + pos);
+
+ if (!LITTLE_ENDIAN)
+ res = Short.reverseBytes(res);
+
+ return res;
+ }
+
+ /** {@inheritDoc} */
@Override protected int readIntPositioned0(int pos) {
int res = UNSAFE.getInt(data, BYTE_ARR_OFF + pos);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapInputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapInputStream.java
index 187ded5..75bffb9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapInputStream.java
@@ -113,6 +113,16 @@ public class PortableOffheapInputStream extends PortableAbstractInputStream {
}
/** {@inheritDoc} */
+ @Override protected short readShortPositioned0(int pos) {
+ short res = UNSAFE.getShort(ptr + pos);
+
+ if (!LITTLE_ENDIAN)
+ res = Short.reverseBytes(res);
+
+ return res;
+ }
+
+ /** {@inheritDoc} */
@Override protected int readIntPositioned0(int pos) {
int res = UNSAFE.getInt(ptr + pos);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianInputStreamImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianInputStreamImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianInputStreamImpl.java
index b25471d..a4d711e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianInputStreamImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianInputStreamImpl.java
@@ -65,6 +65,11 @@ public class PlatformBigEndianInputStreamImpl extends PlatformInputStreamImpl {
}
/** {@inheritDoc} */
+ @Override public short readShortPositioned(int pos) {
+ return Short.reverseBytes(super.readShortPositioned(pos));
+ }
+
+ /** {@inheritDoc} */
@Override public int readIntPositioned(int pos) {
return Integer.reverseBytes(super.readIntPositioned(pos));
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformInputStreamImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformInputStreamImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformInputStreamImpl.java
index 68af0e7..68b4141 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformInputStreamImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformInputStreamImpl.java
@@ -146,6 +146,16 @@ public class PlatformInputStreamImpl implements PlatformInputStream {
}
/** {@inheritDoc} */
+ @Override public short readShortPositioned(int pos) {
+ int delta = pos + 2 - this.pos;
+
+ if (delta > 0)
+ ensureEnoughData(delta);
+
+ return UNSAFE.getShort(data + pos);
+ }
+
+ /** {@inheritDoc} */
@Override public int readIntPositioned(int pos) {
int delta = pos + 4 - this.pos;