| 111 | } |
| 112 | |
| 113 | void MainWindow::start(uint pid) |
| 114 | { |
| 115 | if (!d->server) { |
| 116 | QString toolsPath = CustomPaths::global(CustomPaths::Tools); |
| 117 | QString adapter = toolsPath + QDir::separator() + "performanceadapter"; |
| 118 | d->server = new QProcess(); |
| 119 | |
| 120 | QObject::connect(d->server, &QProcess::errorOccurred, [=](QProcess::ProcessError error){ |
| 121 | qCritical() << "server >> " << error << d->server->errorString(); |
| 122 | }); |
| 123 | QObject::connect(d->server, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), |
| 124 | [](int exit, QProcess::ExitStatus status) { |
| 125 | qCritical() << "server >> " |
| 126 | << "exit: " << exit |
| 127 | << "status: " << status; |
| 128 | }); |
| 129 | #ifdef QT_DEBUG |
| 130 | QObject::connect(d->server, &QProcess::readyReadStandardError, [=](){ |
| 131 | qInfo() << "server stderr >> " << d->server->readAllStandardError(); |
| 132 | }); |
| 133 | QObject::connect(d->server, &QProcess::readyReadStandardOutput, [=](){ |
| 134 | qInfo() << "server stdout >> " << d->server->readAllStandardOutput(); |
| 135 | }); |
| 136 | #endif |
| 137 | qInfo() << adapter << "--port" << d->port; |
| 138 | d->server->start(adapter, {"--port", QString::number(d->port)}); |
| 139 | d->server->waitForReadyRead(); |
| 140 | } |
| 141 | |
| 142 | if (!d->client) { |
| 143 | d->client = new Client(d->host, d->port); |
| 144 | auto cliThread = new QThread(); |
| 145 | d->client->moveToThread(cliThread); |
| 146 | QObject::connect(d->client, &Client::pullDataResult, |
| 147 | d->jsonTabWidget, &JsonTabWidget::parseJson, |
| 148 | Qt::UniqueConnection); |
| 149 | cliThread->start(); |
| 150 | } |
| 151 | |
| 152 | QObject::metaObject()->invokeMethod(d->client, "initialzation", Q_ARG(int, pid)); |
| 153 | |
| 154 | d->timer = new QTimer(this); |
| 155 | QObject::connect(d->timer, &QTimer::timeout, [=](){ |
| 156 | if (d->client) { |
| 157 | QObject::metaObject()->invokeMethod(d->client, "pullData"); |
| 158 | } else { |
| 159 | d->timer->stop(); |
| 160 | } |
| 161 | }); |
| 162 | d->timer->start(1000); |
| 163 | |
| 164 | |
| 165 | if (!d->flameGraphGenTask) { |
| 166 | d->flameGraphGenTask = new FlameGraphGenTask; |
| 167 | QObject::connect(d->perfRecordDisplay, &PerfRecordDisplay::showWebBrowserGP, |
| 168 | d->flameGraphGenTask, &FlameGraphGenTask::showWebBrowser, |
| 169 | Qt::UniqueConnection); |
| 170 |
nothing calls this directly
no test coverage detected