CPPSERV


Home Projects Jobs Clientele Contact
CPPSERV Documentation Download TODO Mailing lists Bug tracker News RSS Feed Browse source

NoBodyResponse.h

Go to the documentation of this file.
00001 /*
00002  * ====================================================================
00003  *
00004  * The Apache Software License, Version 1.1
00005  *
00006  * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
00007  * reserved.
00008  *
00009  * Redistribution and use in source and binary forms, with or without
00010  * modification, are permitted provided that the following conditions
00011  * are met:
00012  *
00013  * 1. Redistributions of source code must retain the above copyright
00014  *    notice, this list of conditions and the following disclaimer.
00015  *
00016  * 2. Redistributions in binary form must reproduce the above copyright
00017  *    notice, this list of conditions and the following disclaimer in
00018  *    the documentation and/or other materials provided with the
00019  *    distribution.
00020  *
00021  * 3. The end-user documentation included with the redistribution, if
00022  *    any, must include the following acknowlegement:
00023  *       "This product includes software developed by the
00024  *        Apache Software Foundation (http://www.apache.org/)."
00025  *    Alternately, this acknowlegement may appear in the software itself,
00026  *    if and wherever such third-party acknowlegements normally appear.
00027  *
00028  * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
00029  *    Foundation" must not be used to endorse or promote products derived
00030  *    from this software without prior written permission. For written
00031  *    permission, please contact apache@apache.org.
00032  *
00033  * 5. Products derived from this software may not be called "Apache"
00034  *    nor may "Apache" appear in their names without prior written
00035  *    permission of the Apache Group.
00036  *
00037  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
00038  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00039  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00040  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
00041  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00042  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00043  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
00044  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00045  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00046  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
00047  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00048  * SUCH DAMAGE.
00049  * ====================================================================
00050  *
00051  */
00052 
00053 #ifndef NO_BODY_RESPONSE_H
00054 #define NO_BODY_RESPONSE_H
00055 
00056 #include <string>
00057 #include <iostream>
00058 #include "onobodystream.h"
00059 #include <servlet/GenericServlet.h>
00060 #include <servlet/ServletRequest.h>
00061 #include <servlet/ServletResponse.h>
00062 #include <servlet/HttpServletResponse.h>
00063 //#include <servlet/Locale.h>
00064 
00065 namespace servlet
00066 {
00067 /*
00068  * A response that includes no body, for use in (dumb) "HEAD" support.
00069  * This just swallows that body, counting the bytes in order to set
00070  * the content length appropriately.  All other methods delegate directly
00071  * to the HTTP Servlet Response object used to construct this one.
00072  */
00073 class NoBodyResponse : public HttpServletResponse {
00074     HttpServletResponse &resp;
00075     onobodystream no_body;
00076     bool didSetContentLength;
00077 
00078     NoBodyResponse(HttpServletResponse& r);
00079     virtual ~NoBodyResponse() { }
00080 
00081     void  setContentLength();
00082 
00083         // SERVLET RESPONSE interface methods
00084 public:
00085     virtual void  setContentLength(int len);
00086     virtual void  setCharacterEncoding(const std::string& charset);
00087     virtual void  setContentType(const std::string& type);
00088     virtual std::string  getContentType();
00089     virtual std::ostream&  getOutputStream();
00090     virtual std::string  getCharacterEncoding();
00091     virtual void  setBufferSize(int size);
00092     virtual int  getBufferSize();
00093     virtual void  reset();
00094     virtual bool  isCommitted();
00095     virtual void  flushBuffer();
00096     //virtual void  setLocale(const Locale& loc);
00097     //virtual const Locale&  getLocale();
00098         // HTTP SERVLET RESPONSE interface methods
00099     virtual void  addCookie(const Cookie& cookie);
00100     virtual bool  containsHeader(const std::string& name) const;
00101     virtual void  setStatus(int sc);
00102     virtual void  setHeader(const std::string& name, const std::string& value);
00103     virtual void  setIntHeader(const std::string& name, int value);
00104     virtual void  setDateHeader(const std::string& name, long date);
00105     virtual void  sendError(int sc, const std::string& msg);
00106     virtual void  sendError(int sc);
00107     virtual void  sendRedirect(const std::string& location);
00108     virtual std::string encodeURL(const std::string& url);
00109     virtual std::string  encodeRedirectURL(const std::string& url);
00110     virtual void  addHeader(const std::string& name, const std::string& value);
00111     virtual void  addDateHeader(const std::string& name, long date);
00112     virtual void  addIntHeader(const std::string& name, int value);
00113 
00114         friend class HttpServlet;
00115 };
00116 }
00117 #endif/*NO_BODY_RESPONSE_H*/

SourceForge.net Logo