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 }