Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @brief The ReadFunctor struct reads data from the nntp socket and stores
- * in an array of chars
- */
- struct ReadFunctor
- {
- ReadFunctor(QSslSocket &sock, std::vector<char> &buffer) : m_sock(sock), m_buffer(buffer){}
- qint64 operator()()
- {
- if(m_sock.waitForReadyRead(2000)) {
- qint64 bytesAvailable = m_sock.bytesAvailable();
- qDebug() << "bytesAvailable: "<<bytesAvailable;
- m_buffer.resize(bytesAvailable);
- return m_sock.read(&m_buffer[0], bytesAvailable);
- }
- return 0;
- }
- QSslSocket &m_sock;
- std::vector<char> &m_buffer;
- };
- void
- NNTPConnector::readFromSocket(std::ostream &writeToMe, int const count,
- std::string const &escapeSequence)
- {
- qint64 bytesRead = 0;
- int breakCount = 0;
- // note, code for StreamWriter is omitted for brevity
- StreamWriter streamWriter(writeToMe, count, escapeSequence);
- do {
- std::vector<char> buffer;
- ReadFunctor readFunctor(nntp, buffer);
- bytesRead = readFunctor();
- qDebug() << (nntp.state() == QAbstractSocket::ConnectedState);
- qDebug() << "bytesRead: "<<bytesRead;
- m_bytesAll += bytesRead;
- emit bytesReadSignal(m_bytesAll);
- breakCount = streamWriter(buffer);
- //
- // Note, when breakCount >= count, there will be no more
- // incoming data and so we can safely break out and not bother
- // issuing a waitForReadyRead
- //
- } while (breakCount < count && bytesRead > 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement