diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2016-05-17 21:13:41 +0200 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2016-05-17 21:22:50 +0200 |
commit | 5d5d2c3c36c77b22a90acae33adb6908c4d7b5d9 (patch) | |
tree | c77ceadda7a80f34722b385f8ab54c74cfeef64d /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util | |
parent | 1da8e4c1edd71b2ddbe95a58060c1be20bd13dd7 (diff) | |
download | open-keychain-5d5d2c3c36c77b22a90acae33adb6908c4d7b5d9.tar.gz open-keychain-5d5d2c3c36c77b22a90acae33adb6908c4d7b5d9.tar.bz2 open-keychain-5d5d2c3c36c77b22a90acae33adb6908c4d7b5d9.zip |
refactor BackupOperation a bit, make more illegal states explicit
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/CountingOutputStream.java | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/CountingOutputStream.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/CountingOutputStream.java new file mode 100644 index 000000000..8bfe26aeb --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/CountingOutputStream.java @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2007 The Guava Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ + +package org.sufficientlysecure.keychain.util; + + +import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +import android.support.annotation.NonNull; + + +public final class CountingOutputStream extends FilterOutputStream { + + private long count; + + /** + * Wraps another output stream, counting the number of bytes written. + * + * @param out + * the output stream to be wrapped + */ + public CountingOutputStream(@NonNull OutputStream out) { + super(out); + } + + /** + * Returns the number of bytes written. + */ + public long getCount() { + return count; + } + + @Override + public void write(@NonNull byte[] b, int off, int len) throws IOException { + out.write(b, off, len); + count += len; + } + + @Override + public void write(int b) throws IOException { + out.write(b); + count++; + } + + // Overriding close() because FilterOutputStream's close() method pre-JDK8 has bad behavior: + // it silently ignores any exception thrown by flush(). Instead, just close the delegate stream. + // It should flush itself if necessary. + @Override + public void close() throws IOException { + out.close(); + } +}
\ No newline at end of file |