~ubuntu-branches/ubuntu/trusty/tomahawk/trusty-proposed

« back to all changes in this revision

Viewing changes to thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstracthttpconnector.h

  • Committer: Package Import Robot
  • Author(s): Harald Sitter
  • Date: 2013-03-07 21:50:13 UTC
  • Revision ID: package-import@ubuntu.com-20130307215013-6gdjkdds7i9uenvs
Tags: upstream-0.6.0+dfsg
ImportĀ upstreamĀ versionĀ 0.6.0+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
 
35
QT_FORWARD_DECLARE_CLASS(QIODevice)
 
36
class QxtHttpSessionManager;
 
37
 
 
38
class QxtAbstractHttpConnectorPrivate;
 
39
class QXT_WEB_EXPORT QxtAbstractHttpConnector : public QObject
 
40
{
 
41
    friend class QxtHttpSessionManager;
 
42
    Q_OBJECT
 
43
public:
 
44
    QxtAbstractHttpConnector(QObject* parent = 0);
 
45
    virtual bool listen(const QHostAddress& iface, quint16 port) = 0;
 
46
 
 
47
protected:
 
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
 
 
59
private Q_SLOTS:
 
60
    void incomingData(QIODevice* device = 0);
 
61
    void disconnected();
 
62
 
 
63
private:
 
64
    void setSessionManager(QxtHttpSessionManager* manager);
 
65
    QXT_DECLARE_PRIVATE(QxtAbstractHttpConnector)
 
66
};
 
67
 
 
68
class QxtHttpServerConnectorPrivate;
 
69
class QXT_WEB_EXPORT QxtHttpServerConnector : public QxtAbstractHttpConnector
 
70
{
 
71
    Q_OBJECT
 
72
public:
 
73
    QxtHttpServerConnector(QObject* parent = 0);
 
74
    virtual bool listen(const QHostAddress& iface, quint16 port);
 
75
 
 
76
protected:
 
77
    virtual bool canParseRequest(const QByteArray& buffer);
 
78
    virtual QHttpRequestHeader parseRequest(QByteArray& buffer);
 
79
    virtual void writeHeaders(QIODevice* device, const QHttpResponseHeader& header);
 
80
 
 
81
private Q_SLOTS:
 
82
    void acceptConnection();
 
83
 
 
84
private:
 
85
    QXT_DECLARE_PRIVATE(QxtHttpServerConnector)
 
86
};
 
87
 
 
88
class QxtScgiServerConnectorPrivate;
 
89
class QXT_WEB_EXPORT QxtScgiServerConnector : public QxtAbstractHttpConnector
 
90
{
 
91
    Q_OBJECT
 
92
public:
 
93
    QxtScgiServerConnector(QObject* parent = 0);
 
94
    virtual bool listen(const QHostAddress& iface, quint16 port);
 
95
 
 
96
protected:
 
97
    virtual bool canParseRequest(const QByteArray& buffer);
 
98
    virtual QHttpRequestHeader parseRequest(QByteArray& buffer);
 
99
    virtual void writeHeaders(QIODevice* device, const QHttpResponseHeader& header);
 
100
 
 
101
private Q_SLOTS:
 
102
    void acceptConnection();
 
103
 
 
104
private:
 
105
    QXT_DECLARE_PRIVATE(QxtScgiServerConnector)
 
106
};
 
107
/* Commented out pending implementation
 
108
 
 
109
class QxtFcgiConnectorPrivate;
 
110
class QXT_WEB_EXPORT QxtFcgiConnector : public QxtAbstractHttpConnector {
 
111
Q_OBJECT
 
112
public:
 
113
    QxtFcgiConnector(QObject* parent = 0);
 
114
    virtual bool listen(const QHostAddress& iface, quint16 port);
 
115
 
 
116
private:
 
117
    QXT_DECLARE_PRIVATE(QxtFcgiConnector)
 
118
};
 
119
*/
 
120
 
 
121
#endif // QXTABSTRACTHTTPCONNECTOR_H