01: /*
02: * ProtocolHandler.java February 2001
03: *
04: * Copyright (C) 2001, Niall Gallagher <niallg@users.sf.net>
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation.
09: *
10: * This library is distributed in the hope that it will be useful,
11: * but WITHOUT ANY WARRANTY; without even the implied warranty of
12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13: * GNU Lesser General Public License for more details.
14: *
15: * You should have received a copy of the GNU Lesser General
16: * Public License along with this library; if not, write to the
17: * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18: * Boston, MA 02111-1307 USA
19: */
20:
21: package simple.http;
22:
23: /**
24: * This is a <code>ProtocolHandler</code> that is used to process
25: * HTTP <code>Request</code> and <code>Response</code> objects. The
26: * intended purpose of the <code>ProtocolHandler</code> object is
27: * to process <code>Request</code> and <code>Response</code> objects,
28: * that is, respond to the given <code>Request</code>.
29: * <p>
30: * Any implementation should make this method thread safe as the
31: * <code>Request</code> and <code>Response</code> objects will be
32: * passed in concurrently with perhaps many other instances.
33: * <p>
34: * The <code>ProtocolHandler</code> is entirely responsible for the
35: * HTTP message headers and body. It is up to the implementation to
36: * ensure that it complies to RFC 2616 or any previous specification.
37: * All headers and the status line can be modified by this object.
38: *
39: * @author Niall Gallagher
40: */
41: public interface ProtocolHandler {
42:
43: /**
44: * Used to pass the <code>Request</code> and <code>Response</code>
45: * to the <code>ProtocolHandler</code> for processing. Any
46: * implementation of this interface must ensure that this is
47: * thread safe, it will be invoked concurrently.
48: * <p>
49: * The <code>Request</code> and <code>Response</code> objects are
50: * in control of the HTTP pipeline. If the next HTTP request is
51: * to be processed the <code>Response</code> MUST be committed
52: * and the <code>Request</code> MUST have its content fully read
53: * or the <code>InputStream</code> closed if there is content.
54: *
55: * @param req the <code>request</code> object to be processed
56: * @param resp the <code>Response</code> object to be processed
57: */
58: public void handle(Request req, Response resp);
59: }
|