public void close() throws IOException {
   if (closed) {
     return;
   }
   closed = true;
   flush();
   LeftOverInputStream is = t.getOriginalInputStream();
   if (!is.isClosed()) {
     try {
       is.close();
     } catch (IOException e) {
     }
   }
   WriteFinishedEvent e = new WriteFinishedEvent(t);
   t.getHttpContext().getServerImpl().addEvent(e);
 }
 public void setAttribute(String name, Object value) {
   impl.setAttribute(name, value);
 }
 public Object getAttribute(String name) {
   return impl.getAttribute(name);
 }
 public String getProtocol() {
   return impl.getProtocol();
 }
 public InetSocketAddress getLocalAddress() {
   return impl.getLocalAddress();
 }
 public InetSocketAddress getRemoteAddress() {
   return impl.getRemoteAddress();
 }
 public void sendResponseHeaders(int rCode, long contentLen) throws IOException {
   impl.sendResponseHeaders(rCode, contentLen);
 }
 public Headers getRequestHeaders() {
   return impl.getRequestHeaders();
 }
 public int getResponseCode() {
   return impl.getResponseCode();
 }
 public InputStream getRequestBody() {
   return impl.getRequestBody();
 }
 public void close() {
   impl.close();
 }
 public HttpContextImpl getHttpContext() {
   return impl.getHttpContext();
 }
 public String getRequestMethod() {
   return impl.getRequestMethod();
 }
 public URI getRequestURI() {
   return impl.getRequestURI();
 }
 public Headers getResponseHeaders() {
   return impl.getResponseHeaders();
 }
 public void setStreams(InputStream i, OutputStream o) {
   impl.setStreams(i, o);
 }
 public HttpPrincipal getPrincipal() {
   return impl.getPrincipal();
 }
 public OutputStream getResponseBody() {
   return impl.getResponseBody();
 }