13f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen/* 23f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * Copyright (C) 2015 The Android Open Source Project 33f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * 43f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * Licensed under the Apache License, Version 2.0 (the "License"); 53f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * you may not use this file except in compliance with the License. 63f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * You may obtain a copy of the License at 73f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * 83f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * http://www.apache.org/licenses/LICENSE-2.0 93f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * 103f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * Unless required by applicable law or agreed to in writing, software 113f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * distributed under the License is distributed on an "AS IS" BASIS, 123f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * See the License for the specific language governing permissions and 143f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * limitations under the License. 153f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen */ 163f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chenpackage com.android.phone.common.mail.utility; 173f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen 183f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chenimport java.io.IOException; 193f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chenimport java.io.OutputStream; 203f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen 213f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen/** 223f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * A simple pass-thru OutputStream that also counts how many bytes are written to it and 233f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * makes that count available to callers. 243f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen */ 253f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chenpublic class CountingOutputStream extends OutputStream { 263f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen private long mCount; 273f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen private final OutputStream mOutputStream; 283f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen 293f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen public CountingOutputStream(OutputStream outputStream) { 303f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen mOutputStream = outputStream; 313f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen } 323f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen 333f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen public long getCount() { 343f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen return mCount; 353f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen } 363f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen 373f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen @Override 383f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen public void write(byte[] buffer, int offset, int count) throws IOException { 393f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen mOutputStream.write(buffer, offset, count); 403f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen mCount += count; 413f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen } 423f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen 433f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen @Override 443f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen public void write(int oneByte) throws IOException { 453f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen mOutputStream.write(oneByte); 463f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen mCount++; 473f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen } 483f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen}