예제 #1
0
void Connection::doRead() {
  while (true) {
    in_.reserve(1024);
    int bytes_read = socketRead(client_fd_, in_.writePtr(), in_.writeSize());
    if (bytes_read > 0) {
      in_.advance(bytes_read);
    }

    if ((bytes_read < 0) && (errno == EAGAIN)) {
      acquire();
      io_desc_->readWhenReady();
      break;

    } else if (bytes_read < 0) {
      LOG(LogMessage::WARNING)
        << "Error on read (" << client_fd_ << "): " << strerror(errno);
      break;

    } else if (bytes_read == 0) {
      // The socket was closed.
      break;

    } else if (!readDone()) {
      LOG(LogMessage::WARNING)
        << "Error procesing read (" << client_fd_ << ")";
      break;
    }

    // Continue issuing reads.
  }

  // This release matches the acquire done when scheduling the
  // startRead() call.
  release();
}
예제 #2
0
static void
updateSetting (CCSBackend *backend, CCSContext *context, CCSPlugin *plugin, CCSSetting *setting)
{
    if (readInit (backend, context))
    {
	readSetting (backend, context, setting);
	readDone (backend, context);
    }
}
예제 #3
0
void QOggSimplePlayer::internalStart()
{
    QMutexLocker mutexLocker(&mutex);
    needPlay=true;
    if(output==NULL)
        return;
    internalStop();
    readDone();
    output->start(&buffer);
}
BlockFileReader::BlockFileReader()
{
  m_dumpSlice = false;
  m_lowresSlice = 0;
  m_slice = 0;

  m_depthSlice = 0;
  m_widthSlice = 0;
  m_heightSlice = 0;

  m_maxFileSize = 1024*1024*1024;
  m_blockSize = 32;
  m_maxCacheSize = 1000;

  m_prevfno = -1;

  reset();

  m_currentAxis = m_currentSlice = -1;

  connect(&m_blockReader, SIGNAL(readDone()),
	  this, SLOT(readDone()));
}
예제 #5
0
void QRecordBasedSimFile::serverReadDone
    ( const QString& reqid, const QByteArray& data, int pos )
{
    if ( reqid == d->reqid )
        emit readDone( data, pos );
}