1 //========================================================================
2 //Copyright 2006 Mort Bay Consulting Pty. Ltd.
3 //------------------------------------------------------------------------
4 //Licensed under the Apache License, Version 2.0 (the "License");
5 //you may not use this file except in compliance with the License.
6 //You may obtain a copy of the License at
7 //http://www.apache.org/licenses/LICENSE-2.0
8 //Unless required by applicable law or agreed to in writing, software
9 //distributed under the License is distributed on an "AS IS" BASIS,
10 //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 //See the License for the specific language governing permissions and
12 //limitations under the License.
13 //========================================================================
14
15
16 package org.mortbay.jetty;
17
18 import java.io.IOException;
19
20 import org.mortbay.io.Buffer;
21
22 public interface Generator
23 {
24 public static final boolean LAST=true;
25 public static final boolean MORE=false;
26
27 /* ------------------------------------------------------------ */
28 /**
29 * Add content.
30 *
31 * @param content
32 * @param last
33 * @throws IllegalArgumentException if <code>content</code> is {@link Buffer#isImmutable immutable}.
34 * @throws IllegalStateException If the request is not expecting any more content,
35 * or if the buffers are full and cannot be flushed.
36 * @throws IOException if there is a problem flushing the buffers.
37 */
38 void addContent(Buffer content, boolean last) throws IOException;
39
40 /* ------------------------------------------------------------ */
41 /**
42 * Add content.
43 *
44 * @param b byte
45 * @return true if the buffers are full
46 * @throws IOException
47 */
48 boolean addContent(byte b) throws IOException;
49
50 void complete() throws IOException;
51
52 void completeHeader(HttpFields responseFields, boolean last) throws IOException;
53
54 long flush() throws IOException;
55
56 int getContentBufferSize();
57
58 long getContentWritten();
59
60 boolean isContentWritten();
61
62 void increaseContentBufferSize(int size);
63
64 boolean isBufferFull();
65
66 boolean isCommitted();
67
68 boolean isComplete();
69
70 boolean isPersistent();
71
72 void reset(boolean returnBuffers);
73
74 void resetBuffer();
75
76 void sendError(int code, String reason, String content, boolean close) throws IOException;
77
78 void setHead(boolean head);
79
80 void setRequest(String method, String uri);
81
82 void setResponse(int status, String reason);
83
84
85 void setSendServerVersion(boolean sendServerVersion);
86
87 void setVersion(int version);
88
89 boolean isIdle();
90
91 void setContentLength(long length);
92
93 void setPersistent(boolean persistent);
94
95
96 }