void StationsPluginSimple::finished(QNetworkReply *rep) { int id; qDebug() << "Url loaded" << rep->url().toString(); if (!replies.contains(rep)) return ; rep->deleteLater(); id = replies[rep]; if (id >= 0) handleStatus(rep->readAll(), id); else handleInfos(rep->readAll()); step++; emit progress(step, count); replies.remove(rep); if (step == count) { step = 0; count = 0; emit done(); } }
void SftpChannelPrivate::handleCurrentPacket() { #ifdef CREATOR_SSH_DEBUG qDebug("Handling SFTP packet of type %d", m_incomingPacket.type()); #endif switch (m_incomingPacket.type()) { case SSH_FXP_VERSION: handleServerVersion(); break; case SSH_FXP_HANDLE: handleHandle(); break; case SSH_FXP_NAME: handleName(); break; case SSH_FXP_STATUS: handleStatus(); break; case SSH_FXP_DATA: handleReadData(); break; case SSH_FXP_ATTRS: handleAttrs(); break; default: throw SshServerException(SSH_DISCONNECT_PROTOCOL_ERROR, "Unexpected packet.", tr("Unexpected packet of type %1.").arg(m_incomingPacket.type())); } }
void CLeCroy4300B<Controller,RdoList>::writePedestals(Controller& controller, const std::vector<int>& peds) { int slot = m_pConfig->getIntegerParameter("-slot"); unsigned int nPeds = peds.size(); if (nPeds>16) { std::cerr << "!!! CLeCroy4300B configured with more than 16 specifiers" << std::endl; std::cerr << " Only the first sixteen values will be used. " << std::endl; } int status = 0; for (int i=0; i<nPeds; ++i) { uint16_t qx = 0; uint16_t ped_i = static_cast<uint16_t>(peds.at(i)); do { // clear to enable for input execClear(controller); // write the pedestal to chan i status = controller.simpleWrite16(slot,i,17,ped_i,qx); handleStatus(status); handleQ(qx&0x1); } while (qx==0); } }
void QHttpNetworkConnectionChannel::allDone() { #ifndef QT_NO_COMPRESS // expand the whole data. if (reply->d_func()->expectContent() && reply->d_func()->autoDecompress && !reply->d_func()->streamEnd) expand(true); // ### if expand returns false, its an error #endif // while handling 401 & 407, we might reset the status code, so save this. bool emitFinished = reply->d_func()->shouldEmitSignals(); handleStatus(); // ### at this point there should be no more data on the socket // close if server requested if (reply->d_func()->isConnectionCloseEnabled()) close(); // queue the finished signal, this is required since we might send new requests from // slot connected to it. The socket will not fire readyRead signal, if we are already // in the slot connected to readyRead if (emitFinished) QMetaObject::invokeMethod(reply, "finished", Qt::QueuedConnection); // reset the reconnection attempts after we receive a complete reply. // in case of failures, each channel will attempt two reconnects before emitting error. reconnectAttempts = 2; detectPipeliningSupport(); // move next from pipeline to current request if (!alreadyPipelinedRequests.isEmpty()) { if (resendCurrent || reply->d_func()->isConnectionCloseEnabled() || socket->state() != QAbstractSocket::ConnectedState) { // move the pipelined ones back to the main queue requeueCurrentlyPipelinedRequests(); close(); } else { // there were requests pipelined in and we can continue HttpMessagePair messagePair = alreadyPipelinedRequests.takeFirst(); request = messagePair.first; reply = messagePair.second; state = QHttpNetworkConnectionChannel::ReadingState; resendCurrent = false; written = 0; // message body, excluding the header, irrelevant here bytesTotal = 0; // message body total, excluding the header, irrelevant here // pipeline even more connection->d_func()->fillPipeline(socket); // continue reading _q_receiveReply(); } } else if (alreadyPipelinedRequests.isEmpty() && socket->bytesAvailable() > 0) { eatWhitespace(); // this is weird. we had nothing pipelined but still bytes available. better close it. if (socket->bytesAvailable() > 0) close(); QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection); } else if (alreadyPipelinedRequests.isEmpty()) { QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection); } }
void CLeCroy4300B<Controller,RdoList>::execClear(Controller& controller) { int slot = m_pConfig->getIntegerParameter("-slot"); // clear to enable for input uint16_t qx; int status = controller.simpleControl(slot,0,9, qx); handleStatus(status); handleQ(qx&0x1); }
void CLeCroy4300B<Controller,RdoList>::setCommandRegister(Controller& controller, uint16_t cmdreg) { int slot = m_pConfig->getIntegerParameter("-slot"); // int cmdreg = m_pConfig->getIntegerParameter("-cmdregister"); // Check that user has provided a value been specified. // If not, complain and return. if (cmdreg==0) { std::cerr << "!!! CLeCroy4300B slot " << slot; std::cerr << " has no command register value specified!" << std::endl; return; } uint16_t qx; uint16_t reg=0; // Write command register int status = controller.simpleWrite16(slot,0,16,cmdreg,qx); handleStatus(status); handleQ(qx&0x1); // wait a little usleep(10); // Read back the command register status = controller.simpleRead16(slot,0,0,reg,qx); handleStatus(status); handleQ(qx&0x1); // Is it the same if ( cmdreg != reg) { std::cerr << "!!! CLeCroy4300B::setCommandRegister(Controller&, uint16_t)"; std::cerr << " Failed to read back same value that was previously written." << std::endl; } }
void handleResponse(TPacket *packet) { // The response code is stored in command switch(packet->command) { case RESP_OK: printf("Command OK\n"); break; case RESP_DONE: printf("Command Done\n"); break; case RESP_STATUS: handleStatus(packet); break; default: printf("Arduino is confused\n"); } }
void QHttpNetworkConnectionChannel::allDone() { Q_ASSERT(reply); if (!reply) { qWarning() << "QHttpNetworkConnectionChannel::allDone() called without reply. Please report at http://bugreports.qt.nokia.com/"; return; } // while handling 401 & 407, we might reset the status code, so save this. bool emitFinished = reply->d_func()->shouldEmitSignals(); bool connectionCloseEnabled = reply->d_func()->isConnectionCloseEnabled(); detectPipeliningSupport(); handleStatus(); // handleStatus() might have removed the reply because it already called connection->emitReplyError() // queue the finished signal, this is required since we might send new requests from // slot connected to it. The socket will not fire readyRead signal, if we are already // in the slot connected to readyRead if (reply && emitFinished) QMetaObject::invokeMethod(reply, "finished", Qt::QueuedConnection); // reset the reconnection attempts after we receive a complete reply. // in case of failures, each channel will attempt two reconnects before emitting error. reconnectAttempts = 2; // now the channel can be seen as free/idle again, all signal emissions for the reply have been done if (state != QHttpNetworkConnectionChannel::ClosingState) state = QHttpNetworkConnectionChannel::IdleState; // if it does not need to be sent again we can set it to 0 // the previous code did not do that and we had problems with accidental re-sending of a // finished request. // Note that this may trigger a segfault at some other point. But then we can fix the underlying // problem. if (!resendCurrent) { request = QHttpNetworkRequest(); reply = 0; } // move next from pipeline to current request if (!alreadyPipelinedRequests.isEmpty()) { if (resendCurrent || connectionCloseEnabled || socket->state() != QAbstractSocket::ConnectedState) { // move the pipelined ones back to the main queue requeueCurrentlyPipelinedRequests(); close(); } else { // there were requests pipelined in and we can continue HttpMessagePair messagePair = alreadyPipelinedRequests.takeFirst(); request = messagePair.first; reply = messagePair.second; state = QHttpNetworkConnectionChannel::ReadingState; resendCurrent = false; written = 0; // message body, excluding the header, irrelevant here bytesTotal = 0; // message body total, excluding the header, irrelevant here // pipeline even more connection->d_func()->fillPipeline(socket); // continue reading //_q_receiveReply(); // this was wrong, allDone gets called from that function anyway. } } else if (alreadyPipelinedRequests.isEmpty() && socket->bytesAvailable() > 0) { // this is weird. we had nothing pipelined but still bytes available. better close it. //if (socket->bytesAvailable() > 0) // close(); // // FIXME // We do not close it anymore now, but should introduce this again after having fixed // the chunked decoder in QHttpNetworkReply to read the whitespace after the last chunk. // (Currently this is worked around by readStatus in the QHttpNetworkReply ignoring // leading whitespace. QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection); } else if (alreadyPipelinedRequests.isEmpty()) { if (connectionCloseEnabled) if (socket->state() != QAbstractSocket::UnconnectedState) close(); if (qobject_cast<QHttpNetworkConnection*>(connection)) QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection); } }
void QHttpNetworkConnectionChannel::allDone() { #ifndef QT_NO_COMPRESS // expand the whole data. if (reply->d_func()->expectContent() && reply->d_func()->autoDecompress && !reply->d_func()->streamEnd) expand(true); // ### if expand returns false, its an error #endif // while handling 401 & 407, we might reset the status code, so save this. bool emitFinished = reply->d_func()->shouldEmitSignals(); handleStatus(); // ### at this point there should be no more data on the socket // close if server requested bool connectionCloseEnabled = reply->d_func()->isConnectionCloseEnabled(); if (connectionCloseEnabled) close(); // queue the finished signal, this is required since we might send new requests from // slot connected to it. The socket will not fire readyRead signal, if we are already // in the slot connected to readyRead if (emitFinished) QMetaObject::invokeMethod(reply, "finished", Qt::QueuedConnection); // reset the reconnection attempts after we receive a complete reply. // in case of failures, each channel will attempt two reconnects before emitting error. reconnectAttempts = 2; detectPipeliningSupport(); // now the channel can be seen as free/idle again, all signal emissions for the reply have been done this->state = QHttpNetworkConnectionChannel::IdleState; // if it does not need to be sent again we can set it to 0 // the previous code did not do that and we had problems with accidental re-sending of a // finished request. // Note that this may trigger a segfault at some other point. But then we can fix the underlying // problem. if (!resendCurrent) { request = QHttpNetworkRequest(); reply = 0; } // move next from pipeline to current request if (!alreadyPipelinedRequests.isEmpty()) { if (resendCurrent || connectionCloseEnabled || socket->state() != QAbstractSocket::ConnectedState) { // move the pipelined ones back to the main queue requeueCurrentlyPipelinedRequests(); close(); } else { // there were requests pipelined in and we can continue HttpMessagePair messagePair = alreadyPipelinedRequests.takeFirst(); request = messagePair.first; reply = messagePair.second; state = QHttpNetworkConnectionChannel::ReadingState; resendCurrent = false; written = 0; // message body, excluding the header, irrelevant here bytesTotal = 0; // message body total, excluding the header, irrelevant here // pipeline even more connection->d_func()->fillPipeline(socket); // continue reading //_q_receiveReply(); // this was wrong, allDone gets called from that function anyway. } } else if (alreadyPipelinedRequests.isEmpty() && socket->bytesAvailable() > 0) { eatWhitespace(); // this is weird. we had nothing pipelined but still bytes available. better close it. if (socket->bytesAvailable() > 0) close(); QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection); } else if (alreadyPipelinedRequests.isEmpty()) { if (qobject_cast<QHttpNetworkConnection*>(connection)) QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection); } }