예제 #1
0
void HttpClient::onReadyRead()
{
        switch( httpState ) {
        case Sending:
#ifdef HTTP_CLIENT_DEBUG
                qDebug() << this << "onReadyRead(), Sending";
#endif
                httpState = ReadingResponseHeader;
        case ReadingResponseHeader:
#ifdef HTTP_CLIENT_DEBUG
                qDebug() << this << "onReadyRead(), ReadingResponseHeader";
#endif
                // если не дочитан
                if( !readResponseHeader() )
                        break;
                if( responseHeader.statusCode() == 100 ) {
                        // Continue
                        // это нам говорят продолжай слать пост, игнорируем,
                        // опять будем читать хидер
                        break;
                }
                else if ( responseHeader.statusCode() == 302 ) {
                        // Moved temporary
                        if ( responseHeader.hasKey( "Location" ) ) {
                                QString location = responseHeader.value( "Location" );
                                if ( location.at( 0 ) == '/' )
                                        url.setPath( location );
                                else
                                        url.setUrl( location );
                                method = GET;
                        }
                        break;
                }
                httpState = ReadingResponseBody;
        case ReadingResponseBody:
#ifdef HTTP_CLIENT_DEBUG
                qDebug() << this << "onReadyRead(), ReadingResponseBody";
#endif
                // если не дочитан
                if( !readResponseBody() )
                        break;
                emitDone();
                break;
        default:
                qCritical() << this << "onReadyRead(): unknown httpState";
                qFatal( "programming error" );
        }
}
예제 #2
0
int SnapTool::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QObject::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: done(); break;
        case 1: snapAndSend(); break;
        case 2: emitDone(); break;
        default: ;
        }
        _id -= 3;
    }
    return _id;
}