diff options
author | Alex Blasche <alexander.blasche@digia.com> | 2014-01-28 10:13:28 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-30 14:22:56 +0100 |
commit | 039982cfa41515fbf559a4e3645aab14f77ee447 (patch) | |
tree | f878d4e11b08c70e98a55eff5c16646414d5b695 /src | |
parent | 7f6c59623c535fcd2075464e3870e9897c3f5f2b (diff) |
Synchronize setting of QBluetoothSocket's error string, code and signal
This fixes a few cases where errorString, error signal and error code
where out of sync because one was set but not the other. This was
addressed by unifying the usage pattern for error activation to a
pattern where errorString is set and setSocketError() is called
afterwards.
Change-Id: Ibfb04772cf560936aa4ce8ea9643d6a410cc9ee2
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/bluetooth/qbluetoothsocket.cpp | 9 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothsocket_bluez.cpp | 14 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothsocket_qnx.cpp | 20 |
3 files changed, 22 insertions, 21 deletions
diff --git a/src/bluetooth/qbluetoothsocket.cpp b/src/bluetooth/qbluetoothsocket.cpp index 2f086d91..2f2660d0 100644 --- a/src/bluetooth/qbluetoothsocket.cpp +++ b/src/bluetooth/qbluetoothsocket.cpp @@ -319,13 +319,15 @@ void QBluetoothSocket::connectToService(const QBluetoothServiceInfo &service, Op #else if (service.protocolServiceMultiplexer() > 0) { if (!d->ensureNativeSocket(QBluetoothServiceInfo::L2capProtocol)) { - emit error(UnknownSocketError); + d->errorString = tr("Unknown socket error"); + setSocketError(UnknownSocketError); return; } d->connectToService(service.device().address(), service.protocolServiceMultiplexer(), openMode); } else if (service.serverChannel() > 0) { if (!d->ensureNativeSocket(QBluetoothServiceInfo::RfcommProtocol)) { - emit error(UnknownSocketError); + d->errorString = tr("Unknown socket error"); + setSocketError(UnknownSocketError); return; } d->connectToService(service.device().address(), service.serverChannel(), openMode); @@ -544,7 +546,8 @@ void QBluetoothSocket::discoveryFinished() Q_D(QBluetoothSocket); if (d->discoveryAgent){ qCDebug(QT_BT) << "Didn't find any"; - emit error(QBluetoothSocket::ServiceNotFoundError); + d->errorString = tr("Service cannot be found"); + setSocketError(ServiceNotFoundError); d->discoveryAgent->deleteLater(); d->discoveryAgent = 0; } diff --git a/src/bluetooth/qbluetoothsocket_bluez.cpp b/src/bluetooth/qbluetoothsocket_bluez.cpp index bb8e9685..2b1eee9e 100644 --- a/src/bluetooth/qbluetoothsocket_bluez.cpp +++ b/src/bluetooth/qbluetoothsocket_bluez.cpp @@ -180,7 +180,7 @@ void QBluetoothSocketPrivate::_q_writeNotify() ::getsockopt(socket, SOL_SOCKET, SO_ERROR, &errorno, (socklen_t*)&len); if(errorno) { errorString = QString::fromLocal8Bit(strerror(errorno)); - emit q->error(QBluetoothSocket::UnknownSocketError); + q->setSocketError(QBluetoothSocket::UnknownSocketError); return; } @@ -201,8 +201,8 @@ void QBluetoothSocketPrivate::_q_writeNotify() int size = txBuffer.read(buf, 1024); if (::write(socket, buf, size) != size) { - socketError = QBluetoothSocket::NetworkError; - emit q->error(socketError); + errorString = QBluetoothSocket::tr("Network error"); + q->setSocketError(QBluetoothSocket::NetworkError); } else { emit q->bytesWritten(size); @@ -233,9 +233,9 @@ void QBluetoothSocketPrivate::_q_readNotify() errorString = QString::fromLocal8Bit(strerror(errsv)); qCWarning(QT_BT_BLUEZ) << Q_FUNC_INFO << socket << "error:" << readFromDevice << errorString; if(errsv == EHOSTDOWN) - emit q->error(QBluetoothSocket::HostNotFoundError); + q->setSocketError(QBluetoothSocket::HostNotFoundError); else - emit q->error(QBluetoothSocket::UnknownSocketError); + q->setSocketError(QBluetoothSocket::UnknownSocketError); q->disconnectFromService(); q->setSocketState(QBluetoothSocket::UnconnectedState); @@ -444,8 +444,8 @@ qint64 QBluetoothSocketPrivate::writeData(const char *data, qint64 maxSize) Q_Q(QBluetoothSocket); if (q->openMode() & QIODevice::Unbuffered) { if (::write(socket, data, maxSize) != maxSize) { - socketError = QBluetoothSocket::NetworkError; - emit q->error(socketError); + errorString = QBluetoothSocket::tr("Network error"); + q->setSocketError(QBluetoothSocket::NetworkError); } emit q->bytesWritten(maxSize); diff --git a/src/bluetooth/qbluetoothsocket_qnx.cpp b/src/bluetooth/qbluetoothsocket_qnx.cpp index 0be90ec9..90f90178 100644 --- a/src/bluetooth/qbluetoothsocket_qnx.cpp +++ b/src/bluetooth/qbluetoothsocket_qnx.cpp @@ -118,8 +118,8 @@ void QBluetoothSocketPrivate::_q_writeNotify() int size = txBuffer.read(buf, 1024); if (::write(socket, buf, size) != size) { - socketError = QBluetoothSocket::NetworkError; - emit q->error(socketError); + errorString = QBluetoothSocket::tr("Network Error"); + q->setSocketError(QBluetoothSocket::NetworkError); } else { emit q->bytesWritten(size); @@ -144,9 +144,9 @@ void QBluetoothSocketPrivate::_q_readNotify() int errsv = errno; readNotifier->setEnabled(false); connectWriteNotifier->setEnabled(false); - errorString = QString::fromLocal8Bit(strerror(errsv)); qCWarning(QT_BT_QNX) << Q_FUNC_INFO << socket << " error:" << readFromDevice << errorString; //TODO Try if this actually works - emit q->error(QBluetoothSocket::UnknownSocketError); + errorString = QString::fromLocal8Bit(strerror(errsv)); + q->setSocketError(QBluetoothSocket::UnknownSocketError); q->disconnectFromService(); q->setSocketState(QBluetoothSocket::UnconnectedState); @@ -213,9 +213,9 @@ qint64 QBluetoothSocketPrivate::writeData(const char *data, qint64 maxSize) Q_Q(QBluetoothSocket); if (q->openMode() & QIODevice::Unbuffered) { if (::write(socket, data, maxSize) != maxSize) { - socketError = QBluetoothSocket::NetworkError; + errorString = QBluetoothSocket::tr("Network Error"); + q->setSocketError(QBluetoothSocket::NetworkError); qCWarning(QT_BT_QNX) << Q_FUNC_INFO << "Socket error"; - Q_EMIT q->error(socketError); } Q_EMIT q->bytesWritten(maxSize); @@ -303,8 +303,7 @@ void QBluetoothSocketPrivate::controlReply(ppsResult result) if (!result.errorMsg.isEmpty()) { qCWarning(QT_BT_QNX) << Q_FUNC_INFO << "Error connecting to service:" << result.errorMsg; errorString = result.errorMsg; - socketError = QBluetoothSocket::UnknownSocketError; - emit q->error(QBluetoothSocket::UnknownSocketError); + q->setSocketError(QBluetoothSocket::UnknownSocketError); q->setSocketState(QBluetoothSocket::UnconnectedState); return; } else { @@ -319,8 +318,7 @@ void QBluetoothSocketPrivate::controlReply(ppsResult result) if (!result.errorMsg.isEmpty()) { qCWarning(QT_BT_QNX) << Q_FUNC_INFO << result.errorMsg; errorString = result.errorMsg; - socketError = QBluetoothSocket::UnknownSocketError; - emit q->error(QBluetoothSocket::UnknownSocketError); + q->setSocketError(QBluetoothSocket::UnknownSocketError); q->setSocketState(QBluetoothSocket::UnconnectedState); return; } else { @@ -328,8 +326,8 @@ void QBluetoothSocketPrivate::controlReply(ppsResult result) socket = ::open(path.toStdString().c_str(), O_RDWR); if (socket == -1) { errorString = QString::fromLocal8Bit(strerror(errno)); + q->setSocketError(QBluetoothSocket::UnknownSocketError); qCWarning(QT_BT_QNX) << Q_FUNC_INFO << socket << " error:" << errno << errorString; //TODO Try if this actually works - emit q->error(QBluetoothSocket::UnknownSocketError); q->disconnectFromService(); q->setSocketState(QBluetoothSocket::UnconnectedState); |