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