PageRenderTime 223ms CodeModel.GetById 121ms app.highlight 7ms RepoModel.GetById 93ms app.codeStats 0ms

/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstracthttpconnector.h

http://github.com/tomahawk-player/tomahawk
C++ Header | 121 lines | 67 code | 17 blank | 37 comment | 0 complexity | 4884c5f9465bd43553aff0fa7a603f66 MD5 | raw file
  1/****************************************************************************
  2 **
  3 ** Copyright (C) Qxt Foundation. Some rights reserved.
  4 **
  5 ** This file is part of the QxtWeb module of the Qxt library.
  6 **
  7 ** This library is free software; you can redistribute it and/or modify it
  8 ** under the terms of the Common Public License, version 1.0, as published
  9 ** by IBM, and/or under the terms of the GNU Lesser General Public License,
 10 ** version 2.1, as published by the Free Software Foundation.
 11 **
 12 ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY
 13 ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
 14 ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR
 15 ** FITNESS FOR A PARTICULAR PURPOSE.
 16 **
 17 ** You should have received a copy of the CPL and the LGPL along with this
 18 ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files
 19 ** included with the source distribution for more information.
 20 ** If you did not receive a copy of the licenses, contact the Qxt Foundation.
 21 **
 22 ** <http://libqxt.org>  <foundation@libqxt.org>
 23 **
 24 ****************************************************************************/
 25
 26#ifndef QXTABSTRACTHTTPCONNECTOR_H
 27#define QXTABSTRACTHTTPCONNECTOR_H
 28
 29#include "qxtglobal.h"
 30#include <QObject>
 31#include <QHostAddress>
 32#include <QHttpHeader>
 33#include <QSharedPointer>
 34
 35QT_FORWARD_DECLARE_CLASS(QIODevice)
 36class QxtHttpSessionManager;
 37
 38class QxtAbstractHttpConnectorPrivate;
 39class QXT_WEB_EXPORT QxtAbstractHttpConnector : public QObject
 40{
 41    friend class QxtHttpSessionManager;
 42    Q_OBJECT
 43public:
 44    QxtAbstractHttpConnector(QObject* parent = 0);
 45    virtual bool listen(const QHostAddress& iface, quint16 port) = 0;
 46
 47protected:
 48    QxtHttpSessionManager* sessionManager() const;
 49
 50    void addConnection(QIODevice* device);
 51    QIODevice* getRequestConnection(quint32 requestID);
 52    void setRequestDataSource( quint32 requestID, QSharedPointer<QIODevice>& dataSource );
 53    QSharedPointer<QIODevice>& getRequestDataSource(quint32 requestID);
 54    void doneWithRequest(quint32 requestID);
 55    virtual bool canParseRequest(const QByteArray& buffer) = 0;
 56    virtual QHttpRequestHeader parseRequest(QByteArray& buffer) = 0;
 57    virtual void writeHeaders(QIODevice* device, const QHttpResponseHeader& header) = 0;
 58
 59private Q_SLOTS:
 60    void incomingData(QIODevice* device = 0);
 61    void disconnected();
 62
 63private:
 64    void setSessionManager(QxtHttpSessionManager* manager);
 65    QXT_DECLARE_PRIVATE(QxtAbstractHttpConnector)
 66};
 67
 68class QxtHttpServerConnectorPrivate;
 69class QXT_WEB_EXPORT QxtHttpServerConnector : public QxtAbstractHttpConnector
 70{
 71    Q_OBJECT
 72public:
 73    QxtHttpServerConnector(QObject* parent = 0);
 74    virtual bool listen(const QHostAddress& iface, quint16 port);
 75
 76protected:
 77    virtual bool canParseRequest(const QByteArray& buffer);
 78    virtual QHttpRequestHeader parseRequest(QByteArray& buffer);
 79    virtual void writeHeaders(QIODevice* device, const QHttpResponseHeader& header);
 80
 81private Q_SLOTS:
 82    void acceptConnection();
 83
 84private:
 85    QXT_DECLARE_PRIVATE(QxtHttpServerConnector)
 86};
 87
 88class QxtScgiServerConnectorPrivate;
 89class QXT_WEB_EXPORT QxtScgiServerConnector : public QxtAbstractHttpConnector
 90{
 91    Q_OBJECT
 92public:
 93    QxtScgiServerConnector(QObject* parent = 0);
 94    virtual bool listen(const QHostAddress& iface, quint16 port);
 95
 96protected:
 97    virtual bool canParseRequest(const QByteArray& buffer);
 98    virtual QHttpRequestHeader parseRequest(QByteArray& buffer);
 99    virtual void writeHeaders(QIODevice* device, const QHttpResponseHeader& header);
100
101private Q_SLOTS:
102    void acceptConnection();
103
104private:
105    QXT_DECLARE_PRIVATE(QxtScgiServerConnector)
106};
107/* Commented out pending implementation
108
109class QxtFcgiConnectorPrivate;
110class QXT_WEB_EXPORT QxtFcgiConnector : public QxtAbstractHttpConnector {
111Q_OBJECT
112public:
113    QxtFcgiConnector(QObject* parent = 0);
114    virtual bool listen(const QHostAddress& iface, quint16 port);
115
116private:
117    QXT_DECLARE_PRIVATE(QxtFcgiConnector)
118};
119*/
120
121#endif // QXTABSTRACTHTTPCONNECTOR_H