uint32_t TQIODeviceTransport::read(uint8_t* buf, uint32_t len) { uint32_t actualSize; qint64 readSize; if (!dev_->isOpen()) { throw TTransportException(TTransportException::NOT_OPEN, "read(): underlying QIODevice is not open"); } actualSize = (uint32_t)std::min((qint64)len, dev_->bytesAvailable()); readSize = dev_->read(reinterpret_cast<char *>(buf), actualSize); if (readSize < 0) { QAbstractSocket* socket; if ((socket = qobject_cast<QAbstractSocket* >(dev_.get()))) { throw TTransportException(TTransportException::UNKNOWN, "Failed to read() from QAbstractSocket", socket->error()); } throw TTransportException(TTransportException::UNKNOWN, "Failed to read from from QIODevice"); } return (uint32_t)readSize; }
uint32_t TQIODeviceTransport::write_partial(const uint8_t* buf, uint32_t len) { qint64 written; if (!dev_->isOpen()) { throw TTransportException(TTransportException::NOT_OPEN, "write_partial(): underlying QIODevice is not open"); } written = dev_->write(reinterpret_cast<const char*>(buf), len); if (written < 0) { QAbstractSocket* socket; if ((socket = qobject_cast<QAbstractSocket*>(dev_.get()))) { throw TTransportException(TTransportException::UNKNOWN, "write_partial(): failed to write to QAbstractSocket", socket->error()); } throw TTransportException(TTransportException::UNKNOWN, "write_partial(): failed to write to underlying QIODevice"); } return (uint32_t)written; }