1// =================================================================================================
2// ADOBE SYSTEMS INCORPORATED
3// Copyright 2006 Adobe Systems Incorporated
4// All Rights Reserved
5//
6// NOTICE:  Adobe permits you to use, modify, and distribute this file in accordance with the terms
7// of the Adobe license agreement accompanying it.
8// =================================================================================================
9
10package com.adobe.xmp.impl;
11
12import java.io.IOException;
13import java.io.OutputStream;
14
15
16/**
17 * An <code>OutputStream</code> that counts the written bytes.
18 *
19 * @since   08.11.2006
20 */
21public final class CountOutputStream extends OutputStream
22{
23	/** the decorated output stream */
24	private final OutputStream out;
25	/** the byte counter */
26	private int bytesWritten = 0;
27
28
29	/**
30	 * Constructor with providing the output stream to decorate.
31	 * @param out an <code>OutputStream</code>
32	 */
33	CountOutputStream(OutputStream out)
34	{
35		this.out = out;
36	}
37
38
39	/**
40	 * Counts the written bytes.
41	 * @see java.io.OutputStream#write(byte[], int, int)
42	 */
43	public void write(byte[] buf, int off, int len) throws IOException
44	{
45		out.write(buf, off, len);
46		bytesWritten += len;
47	}
48
49
50	/**
51	 * Counts the written bytes.
52	 * @see java.io.OutputStream#write(byte[])
53	 */
54	public void write(byte[] buf) throws IOException
55	{
56		out.write(buf);
57		bytesWritten += buf.length;
58	}
59
60
61	/**
62	 * Counts the written bytes.
63	 * @see java.io.OutputStream#write(int)
64	 */
65	public void write(int b) throws IOException
66	{
67		out.write(b);
68		bytesWritten++;
69	}
70
71
72	/**
73	 * @return the bytesWritten
74	 */
75	public int getBytesWritten()
76	{
77		return bytesWritten;
78	}
79}