You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2020/08/01 09:37:27 UTC

[jclouds] branch master updated: Optimize MultiBlobInputStream.read()

This is an automated email from the ASF dual-hosted git repository.

gaul pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jclouds.git


The following commit(s) were added to refs/heads/master by this push:
     new 3ea2cce  Optimize MultiBlobInputStream.read()
3ea2cce is described below

commit 3ea2cce5f2942153f8c51d39ec2444e4e19dcbdc
Author: Andrew Gaul <ga...@apache.org>
AuthorDate: Sat Jul 25 16:39:04 2020 +0900

    Optimize MultiBlobInputStream.read()
    
    Previously this allocated a byte array for every call.
---
 .../org/jclouds/blobstore/config/LocalBlobStore.java  | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
index e8d90e0..20f5fc2 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
@@ -1010,12 +1010,21 @@ public final class LocalBlobStore implements BlobStore {
 
       @Override
       public int read() throws IOException {
-         byte[] b = new byte[1];
-         int result = read(b, 0, b.length);
-         if (result == -1) {
-            return -1;
+         while (true) {
+            if (current == null) {
+               if (!blobs.hasNext()) {
+                  return -1;
+               }
+               current = blobs.next().getPayload().openStream();
+            }
+            int result = current.read();
+            if (result == -1) {
+               current.close();
+               current = null;
+               continue;
+            }
+            return result & 0x000000FF;
          }
-         return b[0] & 0x000000FF;
       }
 
       @Override