Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/network/access/qnetworkaccessdebugpipebackend.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||
2 | - | |||||||||||||||||||
3 | - | |||||||||||||||||||
4 | - | |||||||||||||||||||
5 | - | |||||||||||||||||||
6 | enum { | - | ||||||||||||||||||
7 | ReadBufferSize = 16384, | - | ||||||||||||||||||
8 | WriteBufferSize = ReadBufferSize | - | ||||||||||||||||||
9 | }; | - | ||||||||||||||||||
10 | - | |||||||||||||||||||
11 | QStringList QNetworkAccessDebugPipeBackendFactory::supportedSchemes() const | - | ||||||||||||||||||
12 | { | - | ||||||||||||||||||
13 | return never executed: QStringList(([]() -> QString { enum { Size = sizeof(u"" "debugpipe")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "debugpipe" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); returnreturn QStringList(([]() -> QString { enum { Size = sizeof(u"" "debugpipe")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "debugpipe" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }())); never executed: qstring_literal_temp;return qstring_literal_temp; never executed: }()));return qstring_literal_temp; never executed: return QStringList(([]() -> QString { enum { Size = sizeof(u"" "debugpipe")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "debugpipe" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }())); | 0 | ||||||||||||||||||
14 | } | - | ||||||||||||||||||
15 | - | |||||||||||||||||||
16 | QNetworkAccessBackend * | - | ||||||||||||||||||
17 | QNetworkAccessDebugPipeBackendFactory::create(QNetworkAccessManager::Operation op, | - | ||||||||||||||||||
18 | const QNetworkRequest &request) const | - | ||||||||||||||||||
19 | { | - | ||||||||||||||||||
20 | - | |||||||||||||||||||
21 | switch (op) { | - | ||||||||||||||||||
22 | case executed 8 times by 1 test: QNetworkAccessManager::GetOperation:case QNetworkAccessManager::GetOperation: Executed by:
executed 8 times by 1 test: case QNetworkAccessManager::GetOperation: Executed by:
| 8 | ||||||||||||||||||
23 | case executed 46 times by 1 test: QNetworkAccessManager::PutOperation:case QNetworkAccessManager::PutOperation: Executed by:
executed 46 times by 1 test: case QNetworkAccessManager::PutOperation: Executed by:
| 46 | ||||||||||||||||||
24 | break; executed 54 times by 1 test: break; Executed by:
| 54 | ||||||||||||||||||
25 | - | |||||||||||||||||||
26 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||
27 | - | |||||||||||||||||||
28 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
29 | } | - | ||||||||||||||||||
30 | - | |||||||||||||||||||
31 | QUrl url = request.url(); | - | ||||||||||||||||||
32 | if (url.scheme() == QLatin1String("debugpipe")
| 7-47 | ||||||||||||||||||
33 | return executed 7 times by 1 test: new QNetworkAccessDebugPipeBackend;return new QNetworkAccessDebugPipeBackend; Executed by:
executed 7 times by 1 test: return new QNetworkAccessDebugPipeBackend; Executed by:
| 7 | ||||||||||||||||||
34 | return executed 47 times by 1 test: 0;return 0; Executed by:
executed 47 times by 1 test: return 0; Executed by:
| 47 | ||||||||||||||||||
35 | } | - | ||||||||||||||||||
36 | - | |||||||||||||||||||
37 | QNetworkAccessDebugPipeBackend::QNetworkAccessDebugPipeBackend() | - | ||||||||||||||||||
38 | : bareProtocol(false), hasUploadFinished(false), hasDownloadFinished(false), | - | ||||||||||||||||||
39 | hasEverythingFinished(false), bytesDownloaded(0), bytesUploaded(0) | - | ||||||||||||||||||
40 | { | - | ||||||||||||||||||
41 | } executed 7 times by 1 test: end of block Executed by:
| 7 | ||||||||||||||||||
42 | - | |||||||||||||||||||
43 | QNetworkAccessDebugPipeBackend::~QNetworkAccessDebugPipeBackend() | - | ||||||||||||||||||
44 | { | - | ||||||||||||||||||
45 | - | |||||||||||||||||||
46 | socket.disconnect(this); | - | ||||||||||||||||||
47 | } executed 7 times by 1 test: end of block Executed by:
| 7 | ||||||||||||||||||
48 | - | |||||||||||||||||||
49 | void QNetworkAccessDebugPipeBackend::open() | - | ||||||||||||||||||
50 | { | - | ||||||||||||||||||
51 | socket.connectToHost(url().host(), url().port(12345)); | - | ||||||||||||||||||
52 | socket.setReadBufferSize(ReadBufferSize); | - | ||||||||||||||||||
53 | - | |||||||||||||||||||
54 | - | |||||||||||||||||||
55 | connect(&socket, qFlagLocation("2""readyRead()" "\0" __FILE__ ":" "100"), qFlagLocation("1""socketReadyRead()" "\0" __FILE__ ":" "100")); | - | ||||||||||||||||||
56 | connect(&socket, qFlagLocation("2""error(QAbstractSocket::SocketError)" "\0" __FILE__ ":" "101"), qFlagLocation("1""socketError()" "\0" __FILE__ ":" "101")); | - | ||||||||||||||||||
57 | connect(&socket, qFlagLocation("2""disconnected()" "\0" __FILE__ ":" "102"), qFlagLocation("1""socketDisconnected()" "\0" __FILE__ ":" "102")); | - | ||||||||||||||||||
58 | connect(&socket, qFlagLocation("2""connected()" "\0" __FILE__ ":" "103"), qFlagLocation("1""socketConnected()" "\0" __FILE__ ":" "103")); | - | ||||||||||||||||||
59 | - | |||||||||||||||||||
60 | connect(&socket, qFlagLocation("2""bytesWritten(qint64)" "\0" __FILE__ ":" "105"), qFlagLocation("1""socketBytesWritten(qint64)" "\0" __FILE__ ":" "105")); | - | ||||||||||||||||||
61 | - | |||||||||||||||||||
62 | bareProtocol = QUrlQuery(url()).queryItemValue(QLatin1String("bare")) == QLatin1String("1"); | - | ||||||||||||||||||
63 | - | |||||||||||||||||||
64 | if (operation() == QNetworkAccessManager::PutOperation
| 0-7 | ||||||||||||||||||
65 | uploadByteDevice = createUploadByteDevice(); | - | ||||||||||||||||||
66 | QObject::connect(uploadByteDevice, qFlagLocation("2""readyRead()" "\0" __FILE__ ":" "111"), this, qFlagLocation("1""uploadReadyReadSlot()" "\0" __FILE__ ":" "111")); | - | ||||||||||||||||||
67 | QMetaObject::invokeMethod(this, "uploadReadyReadSlot", Qt::QueuedConnection); | - | ||||||||||||||||||
68 | } executed 7 times by 1 test: end of block Executed by:
| 7 | ||||||||||||||||||
69 | } executed 7 times by 1 test: end of block Executed by:
| 7 | ||||||||||||||||||
70 | - | |||||||||||||||||||
71 | void QNetworkAccessDebugPipeBackend::socketReadyRead() | - | ||||||||||||||||||
72 | { | - | ||||||||||||||||||
73 | pushFromSocketToDownstream(); | - | ||||||||||||||||||
74 | } never executed: end of block | 0 | ||||||||||||||||||
75 | - | |||||||||||||||||||
76 | void QNetworkAccessDebugPipeBackend::downstreamReadyWrite() | - | ||||||||||||||||||
77 | { | - | ||||||||||||||||||
78 | pushFromSocketToDownstream(); | - | ||||||||||||||||||
79 | } never executed: end of block | 0 | ||||||||||||||||||
80 | - | |||||||||||||||||||
81 | void QNetworkAccessDebugPipeBackend::socketBytesWritten(qint64) | - | ||||||||||||||||||
82 | { | - | ||||||||||||||||||
83 | pushFromUpstreamToSocket(); | - | ||||||||||||||||||
84 | } executed 136 times by 1 test: end of block Executed by:
| 136 | ||||||||||||||||||
85 | - | |||||||||||||||||||
86 | void QNetworkAccessDebugPipeBackend::uploadReadyReadSlot() | - | ||||||||||||||||||
87 | { | - | ||||||||||||||||||
88 | pushFromUpstreamToSocket(); | - | ||||||||||||||||||
89 | } executed 7 times by 1 test: end of block Executed by:
| 7 | ||||||||||||||||||
90 | - | |||||||||||||||||||
91 | void QNetworkAccessDebugPipeBackend::pushFromSocketToDownstream() | - | ||||||||||||||||||
92 | { | - | ||||||||||||||||||
93 | QByteArray buffer; | - | ||||||||||||||||||
94 | - | |||||||||||||||||||
95 | if (socket.state() == QAbstractSocket::ConnectingState
| 0-1 | ||||||||||||||||||
96 | return; never executed: return; | 0 | ||||||||||||||||||
97 | } | - | ||||||||||||||||||
98 | - | |||||||||||||||||||
99 | for(;;) { | - | ||||||||||||||||||
100 | if (hasDownloadFinished
| 0-1 | ||||||||||||||||||
101 | return; never executed: return; | 0 | ||||||||||||||||||
102 | - | |||||||||||||||||||
103 | buffer.resize(ReadBufferSize); | - | ||||||||||||||||||
104 | qint64 haveRead = socket.read(buffer.data(), ReadBufferSize); | - | ||||||||||||||||||
105 | - | |||||||||||||||||||
106 | if (haveRead == -1
| 0-1 | ||||||||||||||||||
107 | hasDownloadFinished = true; | - | ||||||||||||||||||
108 | - | |||||||||||||||||||
109 | setHeader(QNetworkRequest::ContentLengthHeader, QVariant()); | - | ||||||||||||||||||
110 | possiblyFinish(); | - | ||||||||||||||||||
111 | break; executed 1 time by 1 test: break; Executed by:
| 1 | ||||||||||||||||||
112 | } else if (haveRead == 0
| 0 | ||||||||||||||||||
113 | break; never executed: break; | 0 | ||||||||||||||||||
114 | } else { | - | ||||||||||||||||||
115 | - | |||||||||||||||||||
116 | buffer.resize(haveRead); | - | ||||||||||||||||||
117 | bytesDownloaded += haveRead; | - | ||||||||||||||||||
118 | - | |||||||||||||||||||
119 | QByteDataBuffer list; | - | ||||||||||||||||||
120 | list.append(buffer); | - | ||||||||||||||||||
121 | buffer.clear(); | - | ||||||||||||||||||
122 | writeDownstreamData(list); | - | ||||||||||||||||||
123 | } never executed: end of block | 0 | ||||||||||||||||||
124 | } | - | ||||||||||||||||||
125 | } executed 1 time by 1 test: end of block Executed by:
| 1 | ||||||||||||||||||
126 | - | |||||||||||||||||||
127 | void QNetworkAccessDebugPipeBackend::pushFromUpstreamToSocket() | - | ||||||||||||||||||
128 | { | - | ||||||||||||||||||
129 | - | |||||||||||||||||||
130 | if (operation() == QNetworkAccessManager::PutOperation
| 0-143 | ||||||||||||||||||
131 | if (hasUploadFinished
| 0-143 | ||||||||||||||||||
132 | return; never executed: return; | 0 | ||||||||||||||||||
133 | - | |||||||||||||||||||
134 | for(;;) { | - | ||||||||||||||||||
135 | if (socket.bytesToWrite() >= WriteBufferSize
| 136-149 | ||||||||||||||||||
136 | return; executed 136 times by 1 test: return; Executed by:
| 136 | ||||||||||||||||||
137 | - | |||||||||||||||||||
138 | qint64 haveRead; | - | ||||||||||||||||||
139 | const char *readPointer = uploadByteDevice->readPointer(WriteBufferSize, haveRead); | - | ||||||||||||||||||
140 | if (haveRead == -1
| 7-142 | ||||||||||||||||||
141 | - | |||||||||||||||||||
142 | hasUploadFinished = true; | - | ||||||||||||||||||
143 | emitReplyUploadProgress(bytesUploaded, bytesUploaded); | - | ||||||||||||||||||
144 | possiblyFinish(); | - | ||||||||||||||||||
145 | break; executed 7 times by 1 test: break; Executed by:
| 7 | ||||||||||||||||||
146 | } else if (haveRead == 0
| 0-142 | ||||||||||||||||||
147 | - | |||||||||||||||||||
148 | break; never executed: break; | 0 | ||||||||||||||||||
149 | } else { | - | ||||||||||||||||||
150 | qint64 haveWritten; | - | ||||||||||||||||||
151 | haveWritten = socket.write(readPointer, haveRead); | - | ||||||||||||||||||
152 | - | |||||||||||||||||||
153 | if (haveWritten < 0
| 0-142 | ||||||||||||||||||
154 | - | |||||||||||||||||||
155 | QString msg = QCoreApplication::translate("QNetworkAccessDebugPipeBackend", "Write error writing to %1: %2") | - | ||||||||||||||||||
156 | .arg(url().toString(), socket.errorString()); | - | ||||||||||||||||||
157 | error(QNetworkReply::ProtocolFailure, msg); | - | ||||||||||||||||||
158 | finished(); | - | ||||||||||||||||||
159 | return; never executed: return; | 0 | ||||||||||||||||||
160 | } else { | - | ||||||||||||||||||
161 | uploadByteDevice->advanceReadPointer(haveWritten); | - | ||||||||||||||||||
162 | bytesUploaded += haveWritten; | - | ||||||||||||||||||
163 | emitReplyUploadProgress(bytesUploaded, -1); | - | ||||||||||||||||||
164 | } executed 142 times by 1 test: end of block Executed by:
| 142 | ||||||||||||||||||
165 | - | |||||||||||||||||||
166 | - | |||||||||||||||||||
167 | - | |||||||||||||||||||
168 | } | - | ||||||||||||||||||
169 | } | - | ||||||||||||||||||
170 | } executed 7 times by 1 test: end of block Executed by:
| 7 | ||||||||||||||||||
171 | } executed 7 times by 1 test: end of block Executed by:
| 7 | ||||||||||||||||||
172 | - | |||||||||||||||||||
173 | void QNetworkAccessDebugPipeBackend::possiblyFinish() | - | ||||||||||||||||||
174 | { | - | ||||||||||||||||||
175 | if (hasEverythingFinished
| 1-7 | ||||||||||||||||||
176 | return; executed 1 time by 1 test: return; Executed by:
| 1 | ||||||||||||||||||
177 | hasEverythingFinished = true; | - | ||||||||||||||||||
178 | - | |||||||||||||||||||
179 | if ((
| 0-7 | ||||||||||||||||||
180 | socket.close(); | - | ||||||||||||||||||
181 | finished(); | - | ||||||||||||||||||
182 | } never executed: else if ((end of block
| 0-7 | ||||||||||||||||||
183 | socket.close(); | - | ||||||||||||||||||
184 | finished(); | - | ||||||||||||||||||
185 | } executed 7 times by 1 test: end of block Executed by:
| 7 | ||||||||||||||||||
186 | - | |||||||||||||||||||
187 | - | |||||||||||||||||||
188 | } executed 7 times by 1 test: end of block Executed by:
| 7 | ||||||||||||||||||
189 | - | |||||||||||||||||||
190 | void QNetworkAccessDebugPipeBackend::closeDownstreamChannel() | - | ||||||||||||||||||
191 | { | - | ||||||||||||||||||
192 | QMessageLogger(__FILE__, 237, __PRETTY_FUNCTION__).warning("QNetworkAccessDebugPipeBackend::closeDownstreamChannel() %d",operation());; | - | ||||||||||||||||||
193 | - | |||||||||||||||||||
194 | - | |||||||||||||||||||
195 | } never executed: end of block | 0 | ||||||||||||||||||
196 | - | |||||||||||||||||||
197 | - | |||||||||||||||||||
198 | void QNetworkAccessDebugPipeBackend::socketError() | - | ||||||||||||||||||
199 | { | - | ||||||||||||||||||
200 | QMessageLogger(__FILE__, 245, __PRETTY_FUNCTION__).warning("QNetworkAccessDebugPipeBackend::socketError() %d",socket.error()); | - | ||||||||||||||||||
201 | QNetworkReply::NetworkError code; | - | ||||||||||||||||||
202 | switch (socket.error()) { | - | ||||||||||||||||||
203 | case never executed: QAbstractSocket::RemoteHostClosedError:case QAbstractSocket::RemoteHostClosedError: never executed: case QAbstractSocket::RemoteHostClosedError: | 0 | ||||||||||||||||||
204 | return; never executed: return; | 0 | ||||||||||||||||||
205 | - | |||||||||||||||||||
206 | case never executed: QAbstractSocket::NetworkError:case QAbstractSocket::NetworkError: never executed: case QAbstractSocket::NetworkError: | 0 | ||||||||||||||||||
207 | code = QNetworkReply::UnknownNetworkError; | - | ||||||||||||||||||
208 | break; never executed: break; | 0 | ||||||||||||||||||
209 | - | |||||||||||||||||||
210 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||
211 | code = QNetworkReply::ProtocolFailure; | - | ||||||||||||||||||
212 | break; never executed: break; | 0 | ||||||||||||||||||
213 | } | - | ||||||||||||||||||
214 | - | |||||||||||||||||||
215 | error(code, QNetworkAccessDebugPipeBackend::tr("Socket error on %1: %2") | - | ||||||||||||||||||
216 | .arg(url().toString(), socket.errorString())); | - | ||||||||||||||||||
217 | finished(); | - | ||||||||||||||||||
218 | disconnect(&socket, qFlagLocation("2""disconnected()" "\0" __FILE__ ":" "263"), this, qFlagLocation("1""socketDisconnected()" "\0" __FILE__ ":" "263")); | - | ||||||||||||||||||
219 | - | |||||||||||||||||||
220 | } never executed: end of block | 0 | ||||||||||||||||||
221 | - | |||||||||||||||||||
222 | void QNetworkAccessDebugPipeBackend::socketDisconnected() | - | ||||||||||||||||||
223 | { | - | ||||||||||||||||||
224 | pushFromSocketToDownstream(); | - | ||||||||||||||||||
225 | - | |||||||||||||||||||
226 | if (socket.bytesToWrite() == 0
| 0-1 | ||||||||||||||||||
227 | - | |||||||||||||||||||
228 | } executed 1 time by 1 test: else {end of block Executed by:
| 1 | ||||||||||||||||||
229 | - | |||||||||||||||||||
230 | QString msg = QNetworkAccessDebugPipeBackend::tr("Remote host closed the connection prematurely on %1") | - | ||||||||||||||||||
231 | .arg(url().toString()); | - | ||||||||||||||||||
232 | error(QNetworkReply::RemoteHostClosedError, msg); | - | ||||||||||||||||||
233 | finished(); | - | ||||||||||||||||||
234 | } never executed: end of block | 0 | ||||||||||||||||||
235 | } | - | ||||||||||||||||||
236 | - | |||||||||||||||||||
237 | void QNetworkAccessDebugPipeBackend::socketConnected() | - | ||||||||||||||||||
238 | { | - | ||||||||||||||||||
239 | } | - | ||||||||||||||||||
240 | - | |||||||||||||||||||
241 | - | |||||||||||||||||||
242 | - | |||||||||||||||||||
243 | - | |||||||||||||||||||
244 | - | |||||||||||||||||||
Switch to Source code | Preprocessed file |