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/21 14:13:50 UTC
ignite git commit: IGNITE-1651: WIP.
Repository: ignite
Updated Branches:
refs/heads/ignite-1651 [created] 82113575f
IGNITE-1651: WIP.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/82113575
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/82113575
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/82113575
Branch: refs/heads/ignite-1651
Commit: 82113575fe21631d3542d243260c5b6c6451e06b
Parents: 3a29b97
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Wed Oct 21 15:14:24 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Wed Oct 21 15:14:24 2015 +0300
----------------------------------------------------------------------
.../internal/portable/GridPortableMarshaller.java | 18 ++++++++++++------
.../portable/PortableClassDescriptor.java | 1 +
.../internal/portable/PortableReaderExImpl.java | 4 ++++
.../ignite/internal/portable/PortableUtils.java | 13 +++++++++++++
.../portable/builder/PortableBuilderImpl.java | 7 +++++++
.../portable/builder/PortableBuilderReader.java | 8 ++++++++
6 files changed, 45 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/82113575/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableMarshaller.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableMarshaller.java
index 4bc8545..6aaccf7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableMarshaller.java
@@ -186,23 +186,29 @@ public class GridPortableMarshaller {
/** */
public static final int UNREGISTERED_TYPE_ID = 0;
+ /** Protocol version. */
+ public static final byte PROTO_VER = 1;
+
+ /** Protocol version position. */
+ public static final int PROTO_VER_POS = 1;
+
/** */
- public static final int TYPE_ID_POS = 2;
+ public static final int TYPE_ID_POS = 3;
/** */
- public static final int HASH_CODE_POS = 6;
+ public static final int HASH_CODE_POS = 7;
/** */
- public static final int TOTAL_LEN_POS = 10;
+ public static final int TOTAL_LEN_POS = 11;
/** */
- public static final byte RAW_DATA_OFF_POS = 14;
+ public static final byte RAW_DATA_OFF_POS = 15;
/** */
- public static final int CLS_NAME_POS = 18;
+ public static final int CLS_NAME_POS = 19;
/** */
- public static final byte DFLT_HDR_LEN = 18;
+ public static final byte DFLT_HDR_LEN = 19;
/** */
private final PortableContext ctx;
http://git-wip-us.apache.org/repos/asf/ignite/blob/82113575/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
index e1b7324..16fe91b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
@@ -653,6 +653,7 @@ public class PortableClassDescriptor {
int pos = writer.position();
writer.doWriteByte(GridPortableMarshaller.OBJ);
+ writer.doWriteByte(GridPortableMarshaller.PROTO_VER);
writer.doWriteBoolean(userType);
writer.doWriteInt(registered ? typeId : GridPortableMarshaller.UNREGISTERED_TYPE_ID);
writer.doWriteInt(obj instanceof CacheObjectImpl ? 0 : obj.hashCode());
http://git-wip-us.apache.org/repos/asf/ignite/blob/82113575/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
index a101db5..3004dde 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
@@ -1737,6 +1737,8 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
return unmarshal(false);
case OBJ:
+ PortableUtils.checkProtocolVersion(doReadByte(raw));
+
PortableObjectEx po;
if (detach) {
@@ -2143,6 +2145,8 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
assert typeId != UNREGISTERED_TYPE_ID;
+ PortableUtils.checkProtocolVersion(doReadByte(true));
+
boolean userType = doReadBoolean(true);
// Skip typeId and hash code.
http://git-wip-us.apache.org/repos/asf/ignite/blob/82113575/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 ccc1a5b..d9e5f47 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
@@ -33,6 +33,8 @@ import java.util.TreeSet;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListSet;
+
+import org.apache.ignite.internal.portable.api.PortableException;
import org.apache.ignite.internal.portable.builder.PortableLazyValue;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.portable.api.PortableObject;
@@ -64,6 +66,7 @@ import static org.apache.ignite.internal.portable.GridPortableMarshaller.MAP;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.NULL;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.OBJ;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.OBJ_ARR;
+import static org.apache.ignite.internal.portable.GridPortableMarshaller.PROTO_VER;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.SHORT;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.SHORT_ARR;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.STRING;
@@ -466,4 +469,14 @@ public class PortableUtils {
return U.newHashSet(set.size());
}
+
+ /**
+ * Check protocol version.
+ *
+ * @param protoVer Protocol version.
+ */
+ public static void checkProtocolVersion(byte protoVer) {
+ if (PROTO_VER != protoVer)
+ throw new PortableException("Unsupported protocol version: " + protoVer);
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/82113575/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
index 96d10a2..32bccf8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
@@ -36,6 +36,8 @@ import org.apache.ignite.internal.portable.*;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.CLS_NAME_POS;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.DFLT_HDR_LEN;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.HASH_CODE_POS;
+import static org.apache.ignite.internal.portable.GridPortableMarshaller.PROTO_VER;
+import static org.apache.ignite.internal.portable.GridPortableMarshaller.PROTO_VER_POS;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.RAW_DATA_OFF_POS;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.TOTAL_LEN_POS;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.TYPE_ID_POS;
@@ -133,6 +135,10 @@ public class PortableBuilderImpl implements PortableBuilder {
this.reader = reader;
this.start = start;
+ byte ver = reader.readByteAbsolute(start + PROTO_VER_POS);
+
+ PortableUtils.checkProtocolVersion(ver);
+
int typeId = reader.readIntAbsolute(start + TYPE_ID_POS);
ctx = reader.portableContext();
hashCode = reader.readIntAbsolute(start + HASH_CODE_POS);
@@ -190,6 +196,7 @@ public class PortableBuilderImpl implements PortableBuilder {
*/
void serializeTo(PortableWriterExImpl writer, PortableBuilderSerializer serializer) {
writer.doWriteByte(GridPortableMarshaller.OBJ);
+ writer.doWriteByte(PROTO_VER);
writer.doWriteBoolean(true);
writer.doWriteInt(registeredType ? typeId : UNREGISTERED_TYPE_ID);
writer.doWriteInt(hashCode);
http://git-wip-us.apache.org/repos/asf/ignite/blob/82113575/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 e93f860..2f9e97f 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
@@ -124,6 +124,14 @@ class PortableBuilderReader {
/**
* @param pos Position in the source array.
+ * @return Read byte value.
+ */
+ public byte readByteAbsolute(int pos) {
+ return PRIM.readByte(arr, pos);
+ }
+
+ /**
+ * @param pos Position in the source array.
* @return Read int value.
*/
public int readIntAbsolute(int pos) {