1 //
2 // ========================================================================
3 // Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd.
4 // ------------------------------------------------------------------------
5 // All rights reserved. This program and the accompanying materials
6 // are made available under the terms of the Eclipse Public License v1.0
7 // and Apache License v2.0 which accompanies this distribution.
8 //
9 // The Eclipse Public License is available at
10 // http://www.eclipse.org/legal/epl-v10.html
11 //
12 // The Apache License v2.0 is available at
13 // http://www.opensource.org/licenses/apache2.0.php
14 //
15 // You may elect to redistribute this code under either of these licenses.
16 // ========================================================================
17 //
18
19 package org.eclipse.jetty.server;
20
21 import java.io.IOException;
22 import java.io.Writer;
23
24 import org.eclipse.jetty.util.ByteArrayOutputStream2;
25
26 /**
27 *
28 */
29 public abstract class HttpWriter extends Writer
30 {
31 public static final int MAX_OUTPUT_CHARS = 512;
32
33 final HttpOutput _out;
34 final ByteArrayOutputStream2 _bytes;
35 final char[] _chars;
36
37 /* ------------------------------------------------------------ */
38 public HttpWriter(HttpOutput out)
39 {
40 _out=out;
41 _chars=new char[MAX_OUTPUT_CHARS];
42 _bytes = new ByteArrayOutputStream2(MAX_OUTPUT_CHARS);
43 }
44
45 /* ------------------------------------------------------------ */
46 @Override
47 public void close() throws IOException
48 {
49 _out.close();
50 }
51
52 /* ------------------------------------------------------------ */
53 @Override
54 public void flush() throws IOException
55 {
56 _out.flush();
57 }
58
59 /* ------------------------------------------------------------ */
60 @Override
61 public void write (String s,int offset, int length) throws IOException
62 {
63 while (length > MAX_OUTPUT_CHARS)
64 {
65 write(s, offset, MAX_OUTPUT_CHARS);
66 offset += MAX_OUTPUT_CHARS;
67 length -= MAX_OUTPUT_CHARS;
68 }
69
70 s.getChars(offset, offset + length, _chars, 0);
71 write(_chars, 0, length);
72 }
73
74 /* ------------------------------------------------------------ */
75 @Override
76 public void write (char[] s,int offset, int length) throws IOException
77 {
78 throw new AbstractMethodError();
79 }
80 }