You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2015/05/29 16:13:04 UTC

[4/6] incubator-ignite git commit: ignite-950: fixes in the protocol

ignite-950: fixes in the protocol


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/2417c07f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/2417c07f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/2417c07f

Branch: refs/heads/ignite-950
Commit: 2417c07f81b6793a61cea7af8d09bd9a274db092
Parents: 3e6c779
Author: Denis Magda <dm...@gridgain.com>
Authored: Fri May 29 14:14:18 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Fri May 29 14:14:18 2015 +0300

----------------------------------------------------------------------
 .../optimized/OptimizedClassDescriptor.java     |  2 +-
 .../optimized/OptimizedObjectInputStream.java   | 44 ++++++++++++++++----
 .../optimized/OptimizedObjectOutputStream.java  | 40 ++++++++++++++----
 3 files changed, 70 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2417c07f/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
index 240a936..ecec3ab 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
@@ -716,7 +716,7 @@ class OptimizedClassDescriptor {
                         "set OptimizedMarshaller.setRequireSerializable() to false " +
                         "(note that performance may degrade if object is not Serializable): " + name);
 
-                int headerPos = out.out().size();
+                int headerPos = out.out().size() - 1;
 
                 writeTypeData(out);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2417c07f/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
index edc612b..d7fc802 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
@@ -352,6 +352,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
 
             switch ((t.type())) {
                 case BYTE:
+                    readByte(); //type
+
                     byte resByte = readByte();
 
                     if (t.field() != null)
@@ -360,6 +362,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
                     break;
 
                 case SHORT:
+                    readByte(); //type
+
                     short resShort = readShort();
 
                     if (t.field() != null)
@@ -368,6 +372,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
                     break;
 
                 case INT:
+                    readByte(); //type
+
                     int resInt = readInt();
 
                     if (t.field() != null)
@@ -376,6 +382,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
                     break;
 
                 case LONG:
+                    readByte(); //type
+
                     long resLong = readLong();
 
                     if (t.field() != null)
@@ -384,6 +392,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
                     break;
 
                 case FLOAT:
+                    readByte(); //type
+
                     float resFloat = readFloat();
 
                     if (t.field() != null)
@@ -392,6 +402,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
                     break;
 
                 case DOUBLE:
+                    readByte(); //type
+
                     double resDouble = readDouble();
 
                     if (t.field() != null)
@@ -400,6 +412,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
                     break;
 
                 case CHAR:
+                    readByte(); //type
+
                     char resChar = readChar();
 
                     if (t.field() != null)
@@ -408,6 +422,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
                     break;
 
                 case BOOLEAN:
+                    readByte(); //type
+
                     boolean resBoolean = readBoolean();
 
                     if (t.field() != null)
@@ -955,27 +971,25 @@ class OptimizedObjectInputStream extends ObjectInputStream {
         int footerStartOff = in.readInt();
 
         if (footerStartOff == EMPTY_FOOTER)
-            return null; //TODO
+            return null; //TODO: IGNITE-950
 
         int pos = footerStartOff;
         in.offset(footerStartOff);
 
-        //assert in.readInt() == FOOTER_START;
-        in.readInt(); //TODO: do I need this? skip fields start offset
+        int fieldsDataPos = in.readInt();
 
         int fieldOff = -1;
 
         while (pos < end) {
             int id = in.readInt();
-            int len = in.readInt(); //TODO: do I need this?
 
             if (fieldId == id) {
-                fieldOff = in.readInt();
+                fieldOff = fieldsDataPos + in.readInt();
                 break;
             }
             else
-                // skip field offset
-                in.skipBytes(4);
+                // skip offset and len
+                in.skipBytes(8);
 
             pos += 12;
         }
@@ -1105,41 +1119,57 @@ class OptimizedObjectInputStream extends ObjectInputStream {
 
                 switch (t.type()) {
                     case BYTE:
+                        in.readByte(); //type
+
                         obj = in.readByte();
 
                         break;
 
                     case SHORT:
+                        in.readByte(); //type
+
                         obj = in.readShort();
 
                         break;
 
                     case INT:
+                        in.readByte(); //type
+
                         obj = in.readInt();
 
                         break;
 
                     case LONG:
+                        in.readByte(); //type
+
                         obj = in.readLong();
 
                         break;
 
                     case FLOAT:
+                        in.readByte(); //type
+
                         obj = in.readFloat();
 
                         break;
 
                     case DOUBLE:
+                        in.readByte(); //type
+
                         obj = in.readDouble();
 
                         break;
 
                     case CHAR:
+                        in.readByte(); //type
+
                         obj = in.readChar();
 
                         break;
 
                     case BOOLEAN:
+                        in.readByte(); //type
+
                         obj = in.readBoolean();
 
                         break;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2417c07f/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
index 2b27ec0..ae0b940 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
@@ -481,50 +481,66 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
 
             switch (t.type()) {
                 case BYTE:
-                    if (t.field() != null)
+                    if (t.field() != null) {
+                        writeByte(BYTE);
                         writeByte(getByte(obj, t.offset()));
+                    }
 
                     break;
 
                 case SHORT:
-                    if (t.field() != null)
+                    if (t.field() != null) {
+                        writeByte(SHORT);
                         writeShort(getShort(obj, t.offset()));
+                    }
 
                     break;
 
                 case INT:
-                    if (t.field() != null)
+                    if (t.field() != null) {
+                        writeByte(INT);
                         writeInt(getInt(obj, t.offset()));
+                    }
 
                     break;
 
                 case LONG:
-                    if (t.field() != null)
+                    if (t.field() != null) {
+                        writeByte(LONG);
                         writeLong(getLong(obj, t.offset()));
+                    }
 
                     break;
 
                 case FLOAT:
-                    if (t.field() != null)
+                    if (t.field() != null) {
+                        writeByte(FLOAT);
                         writeFloat(getFloat(obj, t.offset()));
+                    }
 
                     break;
 
                 case DOUBLE:
-                    if (t.field() != null)
+                    if (t.field() != null) {
+                        writeByte(DOUBLE);
                         writeDouble(getDouble(obj, t.offset()));
+                    }
 
                     break;
 
                 case CHAR:
-                    if (t.field() != null)
+                    if (t.field() != null) {
+                        writeByte(CHAR);
                         writeChar(getChar(obj, t.offset()));
+                    }
 
                     break;
 
                 case BOOLEAN:
-                    if (t.field() != null)
+                    if (t.field() != null) {
+                        writeByte(BOOLEAN);
                         writeBoolean(getBoolean(obj, t.offset()));
+                    }
 
                     break;
 
@@ -751,41 +767,49 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
 
             switch (t.get1().type()) {
                 case BYTE:
+                    writeByte(BYTE);
                     writeByte((Byte)t.get2());
 
                     break;
 
                 case SHORT:
+                    writeByte(SHORT);
                     writeShort((Short)t.get2());
 
                     break;
 
                 case INT:
+                    writeByte(INT);
                     writeInt((Integer)t.get2());
 
                     break;
 
                 case LONG:
+                    writeByte(LONG);
                     writeLong((Long)t.get2());
 
                     break;
 
                 case FLOAT:
+                    writeByte(FLOAT);
                     writeFloat((Float)t.get2());
 
                     break;
 
                 case DOUBLE:
+                    writeByte(DOUBLE);
                     writeDouble((Double)t.get2());
 
                     break;
 
                 case CHAR:
+                    writeByte(CHAR);
                     writeChar((Character)t.get2());
 
                     break;
 
                 case BOOLEAN:
+                    writeByte(BOOLEAN);
                     writeBoolean((Boolean)t.get2());
 
                     break;