Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void
- NNTPConnector::readFromSocket(std::ostream &writeToMe, int const count,
- std::string const &escapeSequence)
- {
- //int breakCountMem = 0;
- qint64 bytesRead = 0;
- int breakCount = 0;
- int escapeIterator = 0;
- do {
- do {
- std::vector<char> buffer;
- int bytesAvailable = nntp.bytesAvailable();
- qDebug() << "bytesAvailable: "<<bytesAvailable;
- if(bytesAvailable <= 0) {
- break;
- }
- buffer.resize(bytesAvailable);
- qDebug() << "error A: "<<nntp.errorString();
- bytesRead = nntp.read(&buffer[0], bytesAvailable);
- qDebug() << "error B: "<<nntp.errorString();
- qDebug() << (nntp.state() == QAbstractSocket::ConnectedState);
- qDebug() << "bytesRead: "<<bytesRead;
- bytesAvailable = nntp.bytesAvailable();
- qDebug() << "bytesAvailable after (sanity check): "<<bytesAvailable;
- //
- // The following loop both writes to the ostream and checks
- // to see how many escape sequences have been encountered
- //
- std::vector<char>::iterator it;
- for(it = buffer.begin(); it != buffer.end(); ++it) {
- writeToMe << *it;
- if(*it == escapeSequence.at(escapeIterator)) {
- if(escapeIterator == escapeSequence.size() - 1) {
- ++breakCount;
- emit readOneBitOfDataSignal();
- escapeIterator = 0;
- } else {
- ++escapeIterator;
- }
- } else {
- escapeIterator = 0;
- if(*it == escapeSequence.at(escapeIterator)) {
- ++escapeIterator;
- }
- }
- }
- m_bytesAll += bytesRead;
- emit bytesReadSignal(m_bytesAll);
- } while (bytesRead > 0);
- if(breakCount >= count) {
- break;
- }
- } while (nntp.waitForReadyRead(2000));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement