int BlsHttpClient::run()
{
    int ret = E_SUCCESS;
    MString body;

    if ((ret = readHttpHeader(*m_parser, body, *m_socket)) != E_SUCCESS) {
        log_error("BlsHttpClient read Http Header failed, ret=%d", ret);
        return ret;
    }

    // get http host
    MString host = m_parser->host();
    if (host.empty()) {
        log_error("BlsHttpClient Http Header error");\
        return -1;
    }

    MString vhost;
    MString tempStr = "HTTP://" + host + "" + m_parser->url();
    MUrl tempUrl(tempStr);

    if (MUrl::stringIsIp(host)) {
        vhost = tempUrl.queryByKey("vhost");
    }

    if (vhost.empty()) {
        vhost = tempUrl.host();
    }

    if (tempUrl.path().endWith(HTTP_LIVE_FLV_SUFFIX)) {
        MString rtmpStr = "rtmp://" + vhost + ":1935" + tempUrl.path();
        int suffixLen = sizeof(HTTP_LIVE_FLV_SUFFIX);
        rtmpStr = rtmpStr.substr(0, rtmpStr.size() - suffixLen + 1);

        int ret = sendHttpLiveFlv(rtmpStr);
        if (ret != E_SUCCESS) {
            log_trace("Http Live Flv finished.");
        }
    }

    else {

    }

end:
    clean();

    return ret;
}
예제 #2
0
/*!
    \internal

    Reads application's command line, sets Flags, paths etc.
  */
bool WsdlConverter::parseArguments(const QStringList &arguments)
{
    bool wasFile = false;
    bool wasOutDir = false;
    bool wasClassName = false;
    bool endOfOptions = false;
    QString appFilePath = qApp->applicationFilePath();

    foreach (QString s, arguments) {
        // Handles '--' arguments
        if (s.startsWith(QLatin1String("--")) && (endOfOptions == false)) {
            // End of options:
            if (s == QLatin1String("--")) {
                endOfOptions = true;
                continue;
            } else if (s == QLatin1String("--soap12")) { // Protocol flags:
                flags->resetFlags(Flags::Soap10 | Flags::Http
                                  | Flags::Json | Flags::Xml);
                flags->setFlags(Flags::Soap12);
            } else if (s == QLatin1String("--soap10")) {
                flags->resetFlags(Flags::Soap12 | Flags::Http
                                  | Flags::Json | Flags::Xml);
                flags->setFlags(Flags::Soap10);
            } else if (s == QLatin1String("--soap")) {
                flags->resetFlags(Flags::Http | Flags::Json | Flags::Xml);
                flags->setFlags(Flags::Soap);
            } else if (s == QLatin1String("--http")) {
                flags->resetFlags(Flags::Soap | Flags::Json | Flags::Xml);
                flags->setFlags(Flags::Http);
            } else if (s == QLatin1String("--json")) {
                flags->resetFlags(Flags::Soap | Flags::Http | Flags::Xml);
                flags->setFlags(Flags::Json);
            } else if (s == QLatin1String("--xml")) {
                flags->resetFlags(Flags::Soap | Flags::Http | Flags::Json);
                flags->setFlags(Flags::Xml);
            } else if (s.startsWith(QLatin1String("--rest"))) {
                flags->setFlags(Flags::Rest);
                // Set HTTP method:
                if (s == QLatin1String("--rest")) {
                    flags->setHttpMethod(Flags::Post);
                } else if (s.startsWith(QLatin1String("--rest="))) {
                    if (!flags->setHttpMethod(s.mid(7)))
                        return false;
                }
            } else if (s == QLatin1String("--synchronous")) { // Synchronousness:
                flags->resetFlags(Flags::Asynchronous);
                flags->setFlags(Flags::Synchronous);
            } else if (s == QLatin1String("--asynchronous")) {
                flags->resetFlags(Flags::Synchronous);
                flags->setFlags(Flags::Asynchronous);
            } else if (s == QLatin1String("--subclass")) { // Modes:
                flags->resetFlags(Flags::DebugMode
                                  | Flags::CompactMode
                                  | Flags::FullMode);
                flags->setFlags(Flags::Subclass);
            } else if ((s == QLatin1String("--full-mode"))
                        || (s == QLatin1String("--full"))) {
                flags->resetFlags(Flags::DebugMode
                                  | Flags::CompactMode
                                  | Flags::Subclass);
                flags->setFlags(Flags::FullMode);
            } else if ((s == QLatin1String("--debug-mode"))
                        || (s == QLatin1String("--debug"))) {
                flags->resetFlags(Flags::FullMode
                                  | Flags::CompactMode
                                  | Flags::Subclass);
                flags->setFlags(Flags::DebugMode);
            } else if ((s == QLatin1String("--compact-mode"))
                        || (s == QLatin1String("--compact"))) {
                flags->resetFlags(Flags::FullMode
                                  | Flags::CompactMode
                                  | Flags::Subclass);
                flags->setFlags(Flags::CompactMode);
            } else if ((s == QLatin1String("--standard-structure"))
                       || (s == QLatin1String("--standard"))) {
                // Structures:
                flags->resetFlags(Flags::NoMessagesStructure
                                  | Flags::AllInOneDirStructure);
                flags->setFlags(Flags::StandardStructure);
            } else if ((s == QLatin1String("--no-messages-structure"))
                       || (s == QLatin1String("--no-messages"))) {
                flags->resetFlags(Flags::StandardStructure
                                  | Flags::AllInOneDirStructure);
                flags->setFlags(Flags::NoMessagesStructure);
            } else if ((s == QLatin1String("--all-in-one-dir-structure"))
                     || (s == QLatin1String("--all-in-one-dir"))) {
                flags->resetFlags(Flags::StandardStructure
                                  | Flags::NoMessagesStructure);
                flags->setFlags(Flags::AllInOneDirStructure);
            } else if (s == QLatin1String("--qmake")) {
                // Build systems (qmake, cmake and scons can be build simultaneously):
                flags->setFlags(Flags::Qmake);
            } else if (s == QLatin1String("--cmake")) {
                flags->setFlags(Flags::Cmake);
            } else if (s == QLatin1String("--scons")) {
                flags->setFlags(Flags::Scons);
            } else if (s == QLatin1String("--no-build-system")) {
                flags->resetFlags(Flags::Qmake | Flags::Cmake | Flags::Scons);
                flags->setFlags(Flags::NoBuildSystem);
            } else if (s.startsWith(QLatin1String("--msgSuffix="))) {
                // Suffixes:
                flags->setMethodSuffix(s.mid(12));
            } else if (s.startsWith(QLatin1String("--objSuffix="))) {
                flags->setObjectSuffix(s.mid(12));
            } else if (s.startsWith(QLatin1String("--endLine="))) {
                // End line:
                flags->setEndLine(s.mid(10));
            } else if (s.startsWith(QLatin1String("--tabulation="))) {
                // Tabulation:
                flags->setTab(s.mid(13).toInt());
            } else if (s == QLatin1String("--force")) { // Force:
                flags->setForced(true);
            } else {
                qWarning() << "WARNING: unrecognised command: "
                           << s << ". Converter will continue.";
            }
        } else if (s.startsWith(QLatin1String("-")) && (endOfOptions == false)) {
            // Handles '-' arguments
            for (int i = 1; i < s.size(); i++) {
                QChar chr = s.at(i);

                if (chr == ('a')) {
                    flags->resetFlags(Flags::Synchronous);
                    flags->setFlags(Flags::Asynchronous);
                } else if (chr == ('s')) {
                    flags->resetFlags(Flags::DebugMode
                                      | Flags::CompactMode
                                      | Flags::FullMode);
                    flags->setFlags(Flags::Subclass);
                } else if (chr == ('n')) {
                    flags->resetFlags(Flags::Qmake
                                      | Flags::Cmake
                                      | Flags::Scons);
                    flags->setFlags(Flags::NoBuildSystem);
                } else if (chr == ('f')) {
                    flags->setForced(true);
                } else {
                    qWarning() << "WARNING: unrecognised command: "
                               << s << ". Converter will continue.";
                }
            }
        } else if ((s != QString()) && (s != appFilePath)) {
            // Handles file names, class name etc.
            // Handles wsdl file, base class name, output dir.
            if (!wasFile) {
                wasFile = true;
                QString tmp = s;
                QUrl tempUrl(tmp);

                if (!QFile::exists(tmp) && tempUrl.isValid()) {
                    argList->insert(Path, tmp);;
                } else {
                    QFileInfo tempInfo(tmp);

                    if (tempInfo.isRelative()) {
                        tmp.prepend(qApp->applicationDirPath() + "/");
                        argList->insert(Path, tmp);
                    }
                }
            } else if (!wasOutDir) {
                wasOutDir = true;
                argList->insert(Dir, s);
            } else if (!wasClassName) {
                wasClassName = true;
                argList->insert(ClassName, s);
            }
        }
    }

    if (wasFile == false) {
        enterErrorState(QLatin1String("No WSDL file specified, conversion can no continue. "
                        "For help, type wsdlConvert --help."));
        return false;
    }

    return true;
}
예제 #3
0
/*!
    Sets this texture to have the contents of the image stored at \a url.

    If the environment variable QT3D_MULTITHREAD is defined, network urls
    (http, etc) are downloaded in a separate download thread, otherwise they are
    downloaded asynchronously in the current thread.
*/
void QGLTexture2D::setUrl(const QUrl &url)
{
    Q_D(QGLTexture2D);
    if (d->url == url)
        return;
    d->url = url;

    if (url.isEmpty())
    {
        d->image = QImage();
    }
    else
    {
        if (url.scheme() == QLatin1String("file") || url.scheme().toLower() == QLatin1String("qrc"))
        {
            QString fileName = url.toLocalFile();

            // slight hack since there doesn't appear to be a QUrl::toResourcePath() function
            // to convert qrc:///foo into :/foo
            if (url.scheme().toLower() == QLatin1String("qrc")) {
                // strips off any qrc: prefix and any excess slashes and replaces it with :/
                QUrl tempUrl(url);
                tempUrl.setScheme("");
                fileName = QLatin1String(":")+tempUrl.toString();
            }

            if (fileName.endsWith(QLatin1String(".dds"), Qt::CaseInsensitive))
            {
                setCompressedFile(fileName);
            }
            else
            {
                QImage im(fileName);
                if (im.isNull())
                    qWarning("Could not load texture: %s", qPrintable(fileName));
                setImage(im);
            }
        }
        else
        {
             if (!d->downloadManager) {
                if (getenv(QT3D_MULTITHREAD)) {
                    //Download in a multithreaded environment
                    d->downloadManager = new QThreadedDownloadManager();
                } else {
                    //Download in a single threaded environment
                    d->downloadManager = new QDownloadManager();
                }
                connect (d->downloadManager,SIGNAL(downloadComplete(QByteArray)),this, SLOT(textureRequestFinished(QByteArray)));
            }

            //Create a temporary image that will be used until the Url is loaded.
            static QImage tempImg(128,128, QImage::Format_RGB32);
            QColor fillcolor(Qt::gray);
            tempImg.fill(fillcolor.rgba());
            setImage(tempImg);

            if (!d->downloadManager->beginDownload(QUrl(url.toString()))) {
                qWarning("Unable to issue texture download request.");
            }
        }
    }
}