01: /**
02: * LibreSource
03: * Copyright (C) 2004-2008 Artenum SARL / INRIA
04: * http://www.libresource.org - contact@artenum.com
05: *
06: * This file is part of the LibreSource software,
07: * which can be used and distributed under license conditions.
08: * The license conditions are provided in the LICENSE.TXT file
09: * at the root path of the packaging that enclose this file.
10: * More information can be found at
11: * - http://dev.libresource.org/home/license
12: *
13: * Initial authors :
14: *
15: * Guillaume Bort / INRIA
16: * Francois Charoy / Universite Nancy 2
17: * Julien Forest / Artenum
18: * Claude Godart / Universite Henry Poincare
19: * Florent Jouille / INRIA
20: * Sebastien Jourdain / INRIA / Artenum
21: * Yves Lerumeur / Artenum
22: * Pascal Molli / Universite Henry Poincare
23: * Gerald Oster / INRIA
24: * Mariarosa Penzi / Artenum
25: * Gerard Sookahet / Artenum
26: * Raphael Tani / INRIA
27: *
28: * Contributors :
29: *
30: * Stephane Bagnier / Artenum
31: * Amadou Dia / Artenum-IUP Blois
32: * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
33: */package org.libresource.so6.core.engine.util;
34:
35: import java.io.IOException;
36: import java.io.OutputStream;
37:
38: /**
39: * @author smack
40: */
41: public class MonitoredOutputStream extends OutputStream {
42: private OutputStream streamToMonitor;
43: private long max;
44: private long currentState = 0;
45: private long mark = 0;
46:
47: public MonitoredOutputStream(OutputStream streamToMonitor,
48: long dataSize) {
49: this .streamToMonitor = streamToMonitor;
50: this .max = dataSize;
51: }
52:
53: // OutputStream
54: public void write(int b) throws IOException {
55: streamToMonitor.write(b);
56: currentState++;
57: }
58:
59: public void close() throws IOException {
60: streamToMonitor.close();
61: }
62:
63: public void flush() throws IOException {
64: streamToMonitor.flush();
65: }
66:
67: public void write(byte[] b, int off, int len) throws IOException {
68: streamToMonitor.write(b, off, len);
69: currentState += len;
70: }
71:
72: public void write(byte[] b) throws IOException {
73: streamToMonitor.write(b);
74: currentState += b.length;
75: }
76: }
|