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/26 13:57:52 UTC

[09/22] ignite git commit: IGNITE-1770: Reader refactoring (5): Removed raw offsets. Now everything is tracked using input stream position.

IGNITE-1770: Reader refactoring (5): Removed raw offsets. Now everything is tracked using input stream position.


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

Branch: refs/heads/ignite-1770
Commit: eac1ed36de5af34a3bcde0943ea521597b0e97f7
Parents: dd8dbf8
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Mon Oct 26 13:22:32 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Mon Oct 26 13:22:32 2015 +0300

----------------------------------------------------------------------
 .../internal/portable/PortableReaderExImpl.java | 84 ++++++++------------
 1 file changed, 34 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/eac1ed36/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 efa1716..575548e 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
@@ -132,12 +132,6 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
     private final ClassLoader ldr;
 
     /** */
-    private int off;
-
-    /** */
-    private int rawOff;
-
-    /** */
     private int len;
 
     /** */
@@ -149,6 +143,9 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
     /** Type ID. */
     private int typeId;
 
+    /** Raw offset. */
+    private int rawOff;
+
     /** */
     private int hdrLen;
 
@@ -185,8 +182,7 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
         this.ldr = ldr;
         this.rCtx = rCtx;
 
-        off = start;
-        rawOff = start;
+        in.position(start);
     }
 
     /**
@@ -197,7 +193,6 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
             return;
 
         int retPos = in.position();
-        int retRawOff = rawOff;
 
         in.position(start);
 
@@ -213,13 +208,13 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
 
         typeId = in.readInt();
 
+        rawOff = in.readInt(start + RAW_DATA_OFF_POS);
+
         if (typeId == UNREGISTERED_TYPE_ID) {
             // Skip to the class name position.
             in.position(in.position() + GridPortableMarshaller.DFLT_HDR_LEN - 8);
 
-            rawOff = in.position();
-
-            int off = rawOff;
+            int off = in.position();
 
             Class cls = doReadClass(true, typeId);
 
@@ -228,7 +223,7 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
 
             typeId = desc.typeId();
 
-            int clsNameLen = rawOff - off;
+            int clsNameLen = in.position() - off;
 
             hdrLen = DFLT_HDR_LEN + clsNameLen;
         }
@@ -237,7 +232,6 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
 
         // Restore state.
         in.position(retPos);
-        rawOff = retRawOff;
 
         hdrParsed = true;
     }
@@ -272,9 +266,9 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
      * @throws PortableException In case of error.
      */
     public Object unmarshal(int offset) throws PortableException {
-        off = offset;
+        in.position(offset);
 
-        return off >= 0 ? unmarshal(false) : null;
+        return in.position() >= 0 ? unmarshal(false) : null;
     }
 
     /**
@@ -908,12 +902,12 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
      * @return Field.
      */
     private <T> T readHandleField() {
-        int handle = (off - 1) - doReadInt(false);
+        int handle = (in.position() - 1) - doReadInt(false);
 
         Object obj = rCtx.getObjectByHandle(handle);
 
         if (obj == null) {
-            off = handle;
+            in.position(handle);
 
             obj = doReadObject(false);
         }
@@ -1402,6 +1396,8 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
 
     /** {@inheritDoc} */
     @Override public PortableRawReader rawReader() {
+        in.position(start + rawOff);
+
         return this;
     }
 
@@ -1436,7 +1432,7 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
                 if (handledPo != null)
                     return handledPo;
 
-                off = handle;
+                in.position(handle);
 
                 return unmarshal(false);
 
@@ -1462,10 +1458,7 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
 
                 rCtx.setPortableHandler(start, po);
 
-                if (raw)
-                    rawOff = start + po.length();
-                else
-                    off = start + po.length();
+                in.position(start + po.length());
 
                 return po;
 
@@ -1739,7 +1732,7 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
 
             String res = new String(in.array(), strOff, strLen, UTF_8);
 
-            shiftOffset(raw, strLen);
+            in.position(in.position() + strLen);
 
             // TODO: Opto.
             //in.position(in.position() + strLen);
@@ -1819,9 +1812,13 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
                 obj = rCtx.getObjectByHandle(handle);
 
                 if (obj == null) {
-                    off = handle;
+                    int retPos = in.position();
+
+                    in.position(handle);
 
                     obj = doReadObject(false);
+
+                    in.position(retPos);
                 }
 
                 break;
@@ -1836,19 +1833,21 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
                 boolean userType = PortableUtils.isUserType(PortableUtils.readFlags(this));
 
                 // Skip typeId and hash code.
-                rawOff += 8;
+                in.position(in.position() + 8);
 
                 desc = ctx.descriptorForTypeId(userType, typeId, ldr);
 
                 len = doReadInt(true);
 
-                rawOff = start + doReadInt(true);
+                in.position(start + hdrLen);
 
                 if (desc == null)
                     throw new PortableInvalidClassException("Unknown type ID: " + typeId);
 
                 obj = desc.read(this);
 
+                in.position(start + len);
+
                 break;
 
             case BYTE:
@@ -2038,7 +2037,7 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
                     throw new PortableException("Failed to unmarshal object with optimized marshaller", e);
                 }
 
-                rawOff += len;
+                in.position(in.position() + len);
 
                 break;
 
@@ -2047,7 +2046,7 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
         }
 
         if (len == 0)
-            len = rawOff - start;
+            len = in.position() - start;
 
         return obj;
     }
@@ -2580,9 +2579,9 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
         if (in.offheapPointer() > 0) {
             int len = doReadInt(raw);
 
-            int pos = offset(raw);
+            int pos = in.position();
 
-            shiftOffset(raw, len);
+            in.position(in.position() + len);
 
             int start = doReadInt(raw);
 
@@ -2736,7 +2735,7 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
             int id0 = in.readInt(searchHead);
 
             if (id0 == id) {
-                off = searchHead + 8;
+                in.position(searchHead + 8);
 
                 return true;
             }
@@ -2800,14 +2799,10 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
 
     /** {@inheritDoc} */
     @Override public void readFully(byte[] b, int off, int len) throws IOException {
-        in.position(rawOff);
-
         int cnt = in.read(b, off, len);
 
         if (cnt < len)
             throw new EOFException();
-
-        rawOff += len;
     }
 
     /** {@inheritDoc} */
@@ -2816,8 +2811,6 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
 
         in.position(in.position() + toSkip);
 
-        rawOff += toSkip;
-
         return toSkip;
     }
 
@@ -2833,13 +2826,7 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
 
     /** {@inheritDoc} */
     @Override public int read(byte[] b, int off, int len) throws IOException {
-        in.position(rawOff);
-
-        int cnt = in.read(b, off, len);
-
-        rawOff += len;
-
-        return cnt;
+        return in.read(b, off, len);
     }
 
     /** {@inheritDoc} */
@@ -2864,7 +2851,7 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
      * @return Offset.
      */
     private int offset(boolean raw) {
-        return raw ? rawOff : off;
+        return in.position();
     }
 
     /**
@@ -2874,10 +2861,7 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
      * @param cnt Count.
      */
     private void shiftOffset(boolean raw, int cnt) {
-        if (raw)
-            rawOff += cnt;
-        else
-            off += cnt;
+        //in.position(in.position() + cnt);
     }
 
     /**