Changeset View
Changeset View
Standalone View
Standalone View
src/core/connection.cpp
Show First 20 Lines • Show All 47 Lines • ▼ Show 20 Line(s) | |||||
48 | } | 48 | } | ||
49 | 49 | | |||
50 | void ConnectionPrivate::commandReceived(const Task &task) | 50 | void ConnectionPrivate::commandReceived(const Task &task) | ||
51 | { | 51 | { | ||
52 | //qDebug() << this << "Command " << task.cmd << " added to the queue"; | 52 | //qDebug() << this << "Command " << task.cmd << " added to the queue"; | ||
53 | if (!suspended && incomingTasks.isEmpty()) { | 53 | if (!suspended && incomingTasks.isEmpty()) { | ||
54 | QMetaObject::invokeMethod(q, "dequeue", Qt::QueuedConnection); | 54 | QMetaObject::invokeMethod(q, "dequeue", Qt::QueuedConnection); | ||
55 | } | 55 | } | ||
56 | incomingTasks.enqueue(task); | 56 | incomingTasks.append(task); | ||
57 | } | 57 | } | ||
58 | 58 | | |||
59 | void ConnectionPrivate::disconnected() | 59 | void ConnectionPrivate::disconnected() | ||
60 | { | 60 | { | ||
61 | q->close(); | 61 | q->close(); | ||
62 | QMetaObject::invokeMethod(q, "readyRead", Qt::QueuedConnection); | 62 | QMetaObject::invokeMethod(q, "readyRead", Qt::QueuedConnection); | ||
63 | } | 63 | } | ||
64 | 64 | | |||
▲ Show 20 Lines • Show All 102 Lines • ▼ Show 20 Line(s) | |||||
167 | } | 167 | } | ||
168 | 168 | | |||
169 | bool Connection::send(int cmd, const QByteArray &data) | 169 | bool Connection::send(int cmd, const QByteArray &data) | ||
170 | { | 170 | { | ||
171 | if (!inited() || !d->outgoingTasks.isEmpty()) { | 171 | if (!inited() || !d->outgoingTasks.isEmpty()) { | ||
172 | Task task; | 172 | Task task; | ||
173 | task.cmd = cmd; | 173 | task.cmd = cmd; | ||
174 | task.data = data; | 174 | task.data = data; | ||
175 | d->outgoingTasks.append(task); | 175 | d->outgoingTasks.append(std::move(task)); | ||
176 | return true; | 176 | return true; | ||
177 | } else { | 177 | } else { | ||
178 | return sendnow(cmd, data); | 178 | return sendnow(cmd, data); | ||
179 | } | 179 | } | ||
180 | } | 180 | } | ||
181 | 181 | | |||
182 | bool Connection::sendnow(int cmd, const QByteArray &data) | 182 | bool Connection::sendnow(int cmd, const QByteArray &data) | ||
183 | { | 183 | { | ||
Show All 24 Lines | |||||
208 | 208 | | |||
209 | int Connection::read(int *_cmd, QByteArray &data) | 209 | int Connection::read(int *_cmd, QByteArray &data) | ||
210 | { | 210 | { | ||
211 | // if it's still empty, then it's an error | 211 | // if it's still empty, then it's an error | ||
212 | if (d->incomingTasks.isEmpty()) { | 212 | if (d->incomingTasks.isEmpty()) { | ||
213 | //kWarning() << this << "Task list is empty!"; | 213 | //kWarning() << this << "Task list is empty!"; | ||
214 | return -1; | 214 | return -1; | ||
215 | } | 215 | } | ||
216 | const Task task = d->incomingTasks.dequeue(); | 216 | const Task& task = d->incomingTasks.constFirst(); | ||
217 | //qDebug() << this << "Command " << task.cmd << " removed from the queue (size " | 217 | //qDebug() << this << "Command " << task.cmd << " removed from the queue (size " | ||
218 | // << task.data.size() << ")"; | 218 | // << task.data.size() << ")"; | ||
219 | *_cmd = task.cmd; | 219 | *_cmd = task.cmd; | ||
220 | data = task.data; | 220 | data = task.data; | ||
221 | 221 | | |||
222 | d->incomingTasks.removeFirst(); | ||||
223 | | ||||
222 | // if we didn't empty our reading queue, emit again | 224 | // if we didn't empty our reading queue, emit again | ||
223 | if (!d->suspended && !d->incomingTasks.isEmpty()) { | 225 | if (!d->suspended && !d->incomingTasks.isEmpty()) { | ||
224 | QMetaObject::invokeMethod(this, "dequeue", Qt::QueuedConnection); | 226 | QMetaObject::invokeMethod(this, "dequeue", Qt::QueuedConnection); | ||
225 | } | 227 | } | ||
226 | 228 | | |||
227 | return data.size(); | 229 | return data.size(); | ||
228 | } | 230 | } | ||
229 | 231 | | |||
230 | #include "moc_connection_p.cpp" | 232 | #include "moc_connection_p.cpp" |