From 1451dc6eceb80cce3d0ceecdcd108b9620faeadd Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sun, 8 Nov 2015 20:43:42 +0000
Subject: [PATCH] More: Don't use DataHelper.readLong() for 1-byte reads, for
 efficiency

---
 .../java/src/net/i2p/client/streaming/impl/Packet.java        | 4 ++--
 core/java/src/net/i2p/data/Certificate.java                   | 2 +-
 .../src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java     | 2 +-
 router/java/src/net/i2p/data/i2np/DeliveryInstructions.java   | 2 +-
 router/java/src/net/i2p/data/i2np/FastI2NPMessageImpl.java    | 2 +-
 router/java/src/net/i2p/data/i2np/I2NPMessageHandler.java     | 2 +-
 router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java        | 4 ++--
 .../src/net/i2p/data/i2np/VariableTunnelBuildMessage.java     | 2 +-
 .../net/i2p/data/i2np/VariableTunnelBuildReplyMessage.java    | 2 +-
 .../java/src/net/i2p/router/message/GarlicMessageParser.java  | 2 +-
 router/java/src/net/i2p/router/tunnel/BuildReplyHandler.java  | 2 +-
 router/java/src/net/i2p/router/tunnel/FragmentHandler.java    | 2 +-
 12 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/Packet.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/Packet.java
index a872b2d77d..a887dc3d2b 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/Packet.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/Packet.java
@@ -585,7 +585,7 @@ class Packet {
         cur += 4;
         setAckThrough(DataHelper.fromLong(buffer, cur, 4));
         cur += 4;
-        int numNacks = (int)DataHelper.fromLong(buffer, cur, 1);
+        int numNacks = buffer[cur] & 0xff;
         cur++;
         if (length < 22 + numNacks*4)
             throw new IllegalArgumentException("Too small with " + numNacks + " nacks: " + length);
@@ -599,7 +599,7 @@ class Packet {
         } else {
             setNacks(null);
         }
-        setResendDelay((int)DataHelper.fromLong(buffer, cur, 1));
+        setResendDelay(buffer[cur] & 0xff);
         cur++;
         setFlags((int)DataHelper.fromLong(buffer, cur, 2));
         cur += 2;
diff --git a/core/java/src/net/i2p/data/Certificate.java b/core/java/src/net/i2p/data/Certificate.java
index aa2624b8af..aefc34ce61 100644
--- a/core/java/src/net/i2p/data/Certificate.java
+++ b/core/java/src/net/i2p/data/Certificate.java
@@ -215,7 +215,7 @@ public class Certificate extends DataStructureImpl {
             throw new DataFormatException("Cert is too small [" + source.length + " off=" + offset + "]");
 
         int cur = offset;
-        _type = (int)DataHelper.fromLong(source, cur, 1);
+        _type = source[cur] & 0xff;
         cur++;
         int length = (int)DataHelper.fromLong(source, cur, 2);
         cur += 2;
diff --git a/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java b/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java
index 4a5c946385..1df280349e 100644
--- a/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java
+++ b/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java
@@ -68,7 +68,7 @@ public class DatabaseSearchReplyMessage extends FastI2NPMessageImpl {
         curIndex += Hash.HASH_LENGTH;
         //_key = new Hash(keyData);
         
-        int num = (int)DataHelper.fromLong(data, curIndex, 1);
+        int num = data[curIndex] & 0xff;
         curIndex++;
         
         _peerHashes.clear();
diff --git a/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java b/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java
index 9669d6f91f..5f59415124 100644
--- a/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java
+++ b/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java
@@ -209,7 +209,7 @@ public class DeliveryInstructions extends DataStructureImpl {
     
     public int readBytes(byte data[], int offset) throws DataFormatException {
         int cur = offset;
-        long flags = DataHelper.fromLong(data, cur, 1);
+        int flags = data[cur] & 0xff;
         cur++;
         //if (_log.shouldLog(Log.DEBUG))
         //    _log.debug("Read flags: " + flags + " mode: " +  flagMode(flags));
diff --git a/router/java/src/net/i2p/data/i2np/FastI2NPMessageImpl.java b/router/java/src/net/i2p/data/i2np/FastI2NPMessageImpl.java
index 564d0f7262..912a9e2b9e 100644
--- a/router/java/src/net/i2p/data/i2np/FastI2NPMessageImpl.java
+++ b/router/java/src/net/i2p/data/i2np/FastI2NPMessageImpl.java
@@ -85,7 +85,7 @@ public abstract class FastI2NPMessageImpl extends I2NPMessageImpl {
             throw new I2NPMessageException("Payload is too short " + maxLen);
         int cur = offset;
         if (type < 0) {
-            type = (int)DataHelper.fromLong(data, cur, 1);
+            type = data[cur] & 0xff;
             cur++;
         }
         _uniqueId = DataHelper.fromLong(data, cur, 4);
diff --git a/router/java/src/net/i2p/data/i2np/I2NPMessageHandler.java b/router/java/src/net/i2p/data/i2np/I2NPMessageHandler.java
index fe1225f74f..f1ea685f93 100644
--- a/router/java/src/net/i2p/data/i2np/I2NPMessageHandler.java
+++ b/router/java/src/net/i2p/data/i2np/I2NPMessageHandler.java
@@ -109,7 +109,7 @@ public class I2NPMessageHandler {
     public int readMessage(byte data[], int offset, int maxLen) throws I2NPMessageException {
         int cur = offset;
         // we will assume that maxLen is >= 1 here. It's checked to be >= 16 in readBytes()
-        int type = (int)DataHelper.fromLong(data, cur, 1);
+        int type = data[cur] & 0xff;
         cur++;
         _lastReadBegin = System.currentTimeMillis();
         I2NPMessage msg = I2NPMessageImpl.createMessage(_context, type);
diff --git a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java
index 5f14c3fef7..062e310b12 100644
--- a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java
+++ b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java
@@ -197,7 +197,7 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM
             throw new I2NPMessageException("Payload is too short " + maxLen);
         int cur = offset;
         if (type < 0) {
-            type = (int)DataHelper.fromLong(data, cur, 1);
+            type = data[cur] & 0xff;
             cur++;
         }
         _uniqueId = DataHelper.fromLong(data, cur, 4);
@@ -413,7 +413,7 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM
      */
     public static I2NPMessage fromRawByteArray(I2PAppContext ctx, byte buffer[], int offset,
                                                int len, I2NPMessageHandler handler) throws I2NPMessageException {
-        int type = (int)DataHelper.fromLong(buffer, offset, 1);
+        int type = buffer[offset] & 0xff;
         offset++;
         I2NPMessage msg = createMessage(ctx, type);
         if (msg == null)
diff --git a/router/java/src/net/i2p/data/i2np/VariableTunnelBuildMessage.java b/router/java/src/net/i2p/data/i2np/VariableTunnelBuildMessage.java
index b33cba7614..52aa565de7 100644
--- a/router/java/src/net/i2p/data/i2np/VariableTunnelBuildMessage.java
+++ b/router/java/src/net/i2p/data/i2np/VariableTunnelBuildMessage.java
@@ -29,7 +29,7 @@ public class VariableTunnelBuildMessage extends TunnelBuildMessage {
     @Override
     public void readMessage(byte[] data, int offset, int dataSize, int type) throws I2NPMessageException {
         // message type will be checked in super()
-        int r = (int)DataHelper.fromLong(data, offset, 1);
+        int r = data[offset] & 0xff;
         if (r <= 0 || r > MAX_RECORD_COUNT)
             throw new I2NPMessageException("Bad record count " + r);
         RECORD_COUNT = r;
diff --git a/router/java/src/net/i2p/data/i2np/VariableTunnelBuildReplyMessage.java b/router/java/src/net/i2p/data/i2np/VariableTunnelBuildReplyMessage.java
index 368104a2ad..575f556300 100644
--- a/router/java/src/net/i2p/data/i2np/VariableTunnelBuildReplyMessage.java
+++ b/router/java/src/net/i2p/data/i2np/VariableTunnelBuildReplyMessage.java
@@ -31,7 +31,7 @@ public class VariableTunnelBuildReplyMessage extends TunnelBuildReplyMessage {
     @Override
     public void readMessage(byte[] data, int offset, int dataSize, int type) throws I2NPMessageException {
         // message type will be checked in super()
-        int r = (int)DataHelper.fromLong(data, offset, 1);
+        int r = data[offset] & 0xff;
         if (r <= 0 || r > MAX_RECORD_COUNT)
             throw new I2NPMessageException("Bad record count " + r);
         RECORD_COUNT = r;
diff --git a/router/java/src/net/i2p/router/message/GarlicMessageParser.java b/router/java/src/net/i2p/router/message/GarlicMessageParser.java
index df83702a28..ef0e5f0b7a 100644
--- a/router/java/src/net/i2p/router/message/GarlicMessageParser.java
+++ b/router/java/src/net/i2p/router/message/GarlicMessageParser.java
@@ -75,7 +75,7 @@ public class GarlicMessageParser {
     private CloveSet readCloveSet(byte data[]) throws DataFormatException {
         int offset = 0;
         
-        int numCloves = (int)DataHelper.fromLong(data, offset, 1);
+        int numCloves = data[offset] & 0xff;
         offset++;
         if (_log.shouldLog(Log.DEBUG))
             _log.debug("# cloves to read: " + numCloves);
diff --git a/router/java/src/net/i2p/router/tunnel/BuildReplyHandler.java b/router/java/src/net/i2p/router/tunnel/BuildReplyHandler.java
index 2196a851e6..8514d6db1a 100644
--- a/router/java/src/net/i2p/router/tunnel/BuildReplyHandler.java
+++ b/router/java/src/net/i2p/router/tunnel/BuildReplyHandler.java
@@ -120,7 +120,7 @@ public class BuildReplyHandler {
             return -1;
         } else {
             SimpleByteCache.release(h);
-            int rv = (int)DataHelper.fromLong(data, TunnelBuildReplyMessage.RECORD_SIZE - 1, 1);
+            int rv = data[TunnelBuildReplyMessage.RECORD_SIZE - 1] & 0xff;
             if (log.shouldLog(Log.DEBUG))
                 log.debug(reply.getUniqueId() + ": Verified: " + rv + " for record " + recordNum + "/" + hop);
             return rv;
diff --git a/router/java/src/net/i2p/router/tunnel/FragmentHandler.java b/router/java/src/net/i2p/router/tunnel/FragmentHandler.java
index 6e0d0675fc..eef1327123 100644
--- a/router/java/src/net/i2p/router/tunnel/FragmentHandler.java
+++ b/router/java/src/net/i2p/router/tunnel/FragmentHandler.java
@@ -340,7 +340,7 @@ class FragmentHandler {
             offset += 4;
         }
         if (extended) {
-            int extendedSize = (int)DataHelper.fromLong(preprocessed, offset, 1);
+            int extendedSize = preprocessed[offset] & 0xff;
             offset++;
             offset += extendedSize; // we don't interpret these yet, but skip them for now
         }
-- 
GitLab