Qt 4.8
qhttpmultipart_p.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the QtNetwork module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia. For licensing terms and
14 ** conditions see http://qt.digia.com/licensing. For further information
15 ** use the contact form at http://qt.digia.com/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Digia gives you certain additional
26 ** rights. These rights are described in the Digia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** GNU General Public License Usage
30 ** Alternatively, this file may be used under the terms of the GNU
31 ** General Public License version 3.0 as published by the Free Software
32 ** Foundation and appearing in the file LICENSE.GPL included in the
33 ** packaging of this file. Please review the following information to
34 ** ensure the GNU General Public License version 3.0 requirements will be
35 ** met: http://www.gnu.org/copyleft/gpl.html.
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41 
42 #ifndef QHTTPMULTIPART_P_H
43 #define QHTTPMULTIPART_P_H
44 
45 //
46 // W A R N I N G
47 // -------------
48 //
49 // This file is not part of the Qt API. It exists for the convenience
50 // of the Network Access API. This header file may change from
51 // version to version without notice, or even be removed.
52 //
53 // We mean it.
54 //
55 
56 #include "QtCore/qshareddata.h"
57 #include "qnetworkrequest_p.h" // for deriving QHttpPartPrivate from QNetworkHeadersPrivate
58 #include "private/qobject_p.h"
59 
61 
62 
64 {
65 public:
67  {
68  }
70  {
71  }
72 
73 
75  : QSharedData(other), QNetworkHeadersPrivate(other), body(other.body),
77  {
78  bodyDevice = other.bodyDevice;
79  }
80 
81  inline bool operator==(const QHttpPartPrivate &other) const
82  {
83  return rawHeaders == other.rawHeaders && body == other.body &&
84  bodyDevice == other.bodyDevice && readPointer == other.readPointer;
85  }
86 
87  void setBodyDevice(QIODevice *device) {
88  bodyDevice = device;
89  readPointer = 0;
90  }
91  void setBody(const QByteArray &newBody) {
92  body = newBody;
93  readPointer = 0;
94  }
95 
96  // QIODevice-style methods called by QHttpMultiPartIODevice (but this class is
97  // not a QIODevice):
98  qint64 bytesAvailable() const;
99  qint64 readData(char *data, qint64 maxSize);
100  qint64 size() const;
101  bool reset();
102 
105 
106 private:
107  void checkHeaderCreated() const;
108 
110  mutable bool headerCreated;
112 };
113 
114 
115 
117 
119 {
120 public:
122  QIODevice(), multiPart(parentMultiPart), readPointer(0), deviceSize(-1) {
123  }
124 
126  }
127 
128  virtual bool atEnd() const {
129  return readPointer == size();
130  }
131 
132  virtual qint64 bytesAvailable() const {
133  return size() - readPointer;
134  }
135 
136  virtual void close() {
137  readPointer = 0;
138  partOffsets.clear();
139  deviceSize = -1;
141  }
142 
143  virtual qint64 bytesToWrite() const {
144  return 0;
145  }
146 
147  virtual qint64 size() const;
148  virtual bool isSequential() const;
149  virtual bool reset();
150  virtual qint64 readData(char *data, qint64 maxSize);
151  virtual qint64 writeData(const char *data, qint64 maxSize);
152 
157 };
158 
159 
160 
162 {
163 public:
164 
166 
168  {
169  delete device;
170  }
171 
176 
177 };
178 
180 
181 
182 #endif // QHTTPMULTIPART_P_H
void checkHeaderCreated() const
virtual bool atEnd() const
Returns true if the current read and write position is at the end of the device (i.e.
QList< qint64 > partOffsets
#define QT_END_NAMESPACE
This macro expands to.
Definition: qglobal.h:90
QHttpPartPrivate(const QHttpPartPrivate &other)
virtual void close()
First emits aboutToClose(), then closes the device and sets its OpenMode to NotOpen.
Definition: qiodevice.cpp:590
virtual void close()
First emits aboutToClose(), then closes the device and sets its OpenMode to NotOpen.
bool operator==(const QHttpPartPrivate &other) const
The QByteArray class provides an array of bytes.
Definition: qbytearray.h:135
QHttpMultiPart::ContentType contentType
void setBody(const QByteArray &newBody)
QHttpMultiPartIODevice * device
virtual qint64 bytesToWrite() const
For buffered devices, this function returns the number of bytes waiting to be written.
#define QT_BEGIN_NAMESPACE
This macro expands to.
Definition: qglobal.h:89
qint64 bytesAvailable() const
static const char * data(const QByteArray &arr)
__int64 qint64
Definition: qglobal.h:942
The QSharedData class is a base class for shared data objects.
Definition: qshareddata.h:56
void setBodyDevice(QIODevice *device)
QList< QHttpPart > parts
QHttpMultiPartPrivate * multiPart
qint64 readData(char *data, qint64 maxSize)
#define Q_AUTOTEST_EXPORT
Definition: qglobal.h:1510
QIODevice * bodyDevice
ContentType
List of known content types for a multipart subtype as described in RFC 2046 and others.
qint64 size() const
QHttpMultiPartIODevice(QHttpMultiPartPrivate *parentMultiPart)
The QIODevice class is the base interface class of all I/O devices in Qt.
Definition: qiodevice.h:66
virtual qint64 bytesAvailable() const
Returns the number of bytes that are available for reading.