1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.jumpmind.symmetric.web;
22
23 import java.io.IOException;
24 import java.io.OutputStream;
25
26 import javax.servlet.ServletOutputStream;
27
28 import org.jumpmind.symmetric.util.MeteredOutputStream;
29
30 public class ThrottledServletOutputStream extends ServletOutputStream {
31 private MeteredOutputStream stream;
32
33 public ThrottledServletOutputStream(OutputStream output, long maxBps) {
34 stream = new MeteredOutputStream(output, maxBps);
35 }
36
37 public ThrottledServletOutputStream(OutputStream output, long maxBps, long threshold) {
38 stream = new MeteredOutputStream(output, maxBps, threshold);
39 }
40
41 public ThrottledServletOutputStream(OutputStream output, long maxBps, long threshold, long checkPoint) {
42 stream = new MeteredOutputStream(output, maxBps, threshold, checkPoint);
43 }
44
45 @Override
46 public void write(int b) throws IOException {
47 stream.write(b);
48
49 }
50
51 public void write(byte[] b) throws IOException {
52 stream.write(b);
53 }
54
55 public void write(byte[] b, int off, int len) throws IOException {
56 stream.write(b, off, len);
57 }
58
59 @Override
60 public void close() throws IOException {
61
62 super.close();
63 stream.close();
64 }
65
66 @Override
67 public void flush() throws IOException {
68
69 super.flush();
70 stream.flush();
71 }
72
73 }