RequestHeader.h

Go to the documentation of this file.
00001 /*
00002 
00003 Copyright (C) 2006-2007 by Peter Dimov.
00004 
00005 This file is part of Calitko (http://www.calitko.org).
00006 
00007 Calitko is free software; you can redistribute it and/or modify
00008 it under the terms of the GNU General Public License as published by
00009 the Free Software Foundation; either version 2 of the License, or
00010 (at your option) any later version.
00011 
00012 Calitko is distributed in the hope that it will be useful,
00013 but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 GNU General Public License for more details.
00016 
00017 You should have received a copy of the GNU General Public License
00018 along with Calitko; if not, write to the Free Software
00019 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00020 
00021 */
00022 
00023 #ifndef PROTOCOLS__HTTP__REQUEST_HEADER_H
00024 #define PROTOCOLS__HTTP__REQUEST_HEADER_H
00025 
00026 #include "Imports.h"
00027 #include "HeaderBase.h"
00028 
00029 namespace Protocols {
00030 namespace Http {
00031 
00033 
00039 class RequestHeader : public HeaderBase
00040 {
00041 public:
00042     // Reimplement parts of the DataBase interface:
00043     auto_ptr <DataBase> copy() const;
00044 
00045     // Own interface:
00046                         RequestHeader (const QByteArray &method = QByteArray(),
00047                                        const QByteArray &path = QByteArray(),
00048                                        int majorVersion = 1,
00049                                        int minorVersion = 1);
00050     QByteArray          method() const;
00051     QByteArray          path() const;
00052     int                 majorVersion() const;
00053     int                 minorVersion() const;
00054 
00055 private:
00056     bool                parseStartLine (const QByteArray &startLine);
00057     QByteArray          rawStartLine() const;
00058 
00060     class Data : public HeaderBase::Data
00061     {
00062     public:
00063         Q_SHARED_DATA_COPY (Data);
00064 
00065         QByteArray      method;
00066         QByteArray      path;
00067         int             majorVersion;
00068         int             minorVersion;
00069     };
00070 
00071     Q_DECLARE_SHARED_DATA (Data);
00072 };
00073 
00075 inline QByteArray RequestHeader::method() const
00076 { Q_SD (const Data); return d->method; }
00077 
00079 inline QByteArray RequestHeader::path() const
00080 { Q_SD (const Data); return d->path; }
00081 
00083 inline int RequestHeader::majorVersion() const
00084 { Q_SD (const Data); return d->majorVersion; }
00085 
00087 inline int RequestHeader::minorVersion() const
00088 { Q_SD (const Data); return d->minorVersion; }
00089 
00090 } // namespace Http
00091 } // namespace Protocols
00092 
00093 #endif // PROTOCOLS__HTTP__REQUEST_HEADER_H