Wie man co_await asio :: mit cobalt wartbarC++

Programme in C++. Entwicklerforum
Anonymous
 Wie man co_await asio :: mit cobalt wartbar

Post by Anonymous »

Wie würde ich auf ein ASIO :: Actable außerhalb von ASIO warten? ASIO :: Awaitables kann nur von Asio :: Awaitables erwartet werden, hier Boost :: Cobalt kommt ins Spiel, aber ich weiß nicht, wie man es verbindet. Auf einer grundlegenden Ebene bin ich mir auch nicht sicher, ob der gesamte ASIO -Codes im Client mit Cobalt neu geschrieben werden muss oder wenn ich den Client mit Cobalt Schicht darüber einwickeln kann. Ich habe einen mit Boost :: Beast und boost :: asio .

Code: Select all

cobalt::promise HttpsClient::GET(const std::string &url){
co_return co_await asio_impl.GET(url);
}
< /code>
Die ASIO impl funktioniert: < /p>
asio::awaitable HttpsClientImpl::GET(std::string_view url, beast::http::fields headers = {})
{
auto data = "";
auto [error, http_response] = co_await redirector_.do_session(http::verb::get, url, headers, data, ssl_ctx_);
if (!error) {
FinalResult fr = http_response->body();
co_return fr;
}
else {
co_return FinalResult();
}
}
< /code>
Hier ist, wie ich es mir vorgestellt habe, es in der Benutzeroberfläche aufzurufen. Tatsächlich ist hier auch ein [url=viewtopic.php?t=20324]Problem[/url] mit Co_AWAIT 
im Signalhandler Lambda: Co_Main :: 2 :: :: operator (): Muss einen Wert
zurückgeben

Code: Select all

QObject::connect(button, &QPushButton::clicked, &w, [&](){
std::string url = "https://microsoftedge.github.io/Demos/json-dummy-data/64KB.json";
label->setText("Getting response...");
FinalResult result = co_await client.GET(url);
label->setText("Response ready!");
text->setPlainText(QString::fromStdString(result));
});

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post