From a5413cf50dee90b604c9a665ab5b58f0d79d9844 Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 17 Jun 2019 19:12:54 +0300 Subject: [PATCH] Explicitly use unique_ptr. GitOrigin-RevId: 1d729c6b0a3d1deaf3423672414f155492b7a0e8 --- benchmark/bench_http.cpp | 3 ++- benchmark/bench_http_server.cpp | 3 ++- benchmark/wget.cpp | 3 ++- td/telegram/ConfigManager.cpp | 4 ++-- tdnet/td/net/GetHostByNameActor.cpp | 6 +++--- tdnet/td/net/HttpConnectionBase.h | 6 ++++-- tdnet/td/net/HttpInboundConnection.cpp | 2 +- tdnet/td/net/HttpInboundConnection.h | 4 ++-- tdnet/td/net/HttpOutboundConnection.cpp | 2 +- tdnet/td/net/HttpOutboundConnection.h | 4 ++-- tdnet/td/net/HttpQuery.h | 2 -- tdnet/td/net/Wget.cpp | 9 +++++---- tdnet/td/net/Wget.h | 8 ++++---- 13 files changed, 30 insertions(+), 26 deletions(-) diff --git a/benchmark/bench_http.cpp b/benchmark/bench_http.cpp index ca26d6cc..1bca2daf 100644 --- a/benchmark/bench_http.cpp +++ b/benchmark/bench_http.cpp @@ -22,6 +22,7 @@ namespace td { std::atomic counter; + class HttpClient : public HttpOutboundConnection::Callback { void start_up() override { IPAddress addr; @@ -48,7 +49,7 @@ class HttpClient : public HttpOutboundConnection::Callback { send_closure(connection_, &HttpOutboundConnection::write_ok); LOG(INFO) << "SEND"; } - void handle(HttpQueryPtr result) override { + void handle(unique_ptr result) override { loop(); } void on_connection_error(Status error) override { diff --git a/benchmark/bench_http_server.cpp b/benchmark/bench_http_server.cpp index 6aa178cf..3e06a9a1 100644 --- a/benchmark/bench_http_server.cpp +++ b/benchmark/bench_http_server.cpp @@ -19,9 +19,10 @@ namespace td { static int cnt = 0; + class HelloWorld : public HttpInboundConnection::Callback { public: - void handle(HttpQueryPtr query, ActorOwn connection) override { + void handle(unique_ptr query, ActorOwn connection) override { // LOG(ERROR) << *query; HttpHeaderCreator hc; Slice content = "hello world"; diff --git a/benchmark/wget.cpp b/benchmark/wget.cpp index 6d7aa4fe..5a2bb63d 100644 --- a/benchmark/wget.cpp +++ b/benchmark/wget.cpp @@ -27,7 +27,8 @@ int main(int argc, char *argv[]) { auto scheduler = td::make_unique(); scheduler->init(0); scheduler - ->create_actor_unsafe(0, "Client", td::PromiseCreator::lambda([](td::Result res) { + ->create_actor_unsafe(0, "Client", + td::PromiseCreator::lambda([](td::Result> res) { LOG(ERROR) << *res.ok(); td::Scheduler::instance()->finish(); }), diff --git a/td/telegram/ConfigManager.cpp b/td/telegram/ConfigManager.cpp index bddf4f94..be82dd76 100644 --- a/td/telegram/ConfigManager.cpp +++ b/td/telegram/ConfigManager.cpp @@ -126,7 +126,7 @@ static ActorOwn<> get_simple_config_impl(Promise promise, int32 sc const int ttl = 3; return ActorOwn<>(create_actor_on_scheduler( "Wget", scheduler_id, - PromiseCreator::lambda([promise = std::move(promise)](Result r_query) mutable { + PromiseCreator::lambda([promise = std::move(promise)](Result> r_query) mutable { promise.set_result([&]() -> Result { TRY_RESULT(http_query, std::move(r_query)); return decode_config(http_query->content_); @@ -160,7 +160,7 @@ ActorOwn<> get_simple_config_google_dns(Promise promise, const Con } return ActorOwn<>(create_actor_on_scheduler( "Wget", scheduler_id, - PromiseCreator::lambda([promise = std::move(promise)](Result r_query) mutable { + PromiseCreator::lambda([promise = std::move(promise)](Result> r_query) mutable { promise.set_result([&]() -> Result { TRY_RESULT(http_query, std::move(r_query)); TRY_RESULT(json, json_decode(http_query->content_)); diff --git a/tdnet/td/net/GetHostByNameActor.cpp b/tdnet/td/net/GetHostByNameActor.cpp index b28ee15b..338f98dc 100644 --- a/tdnet/td/net/GetHostByNameActor.cpp +++ b/tdnet/td/net/GetHostByNameActor.cpp @@ -48,7 +48,7 @@ class GoogleDnsResolver : public Actor { const int timeout = 10; const int ttl = 3; begin_time_ = Time::now(); - auto wget_promise = PromiseCreator::lambda([actor_id = actor_id(this)](Result r_http_query) { + auto wget_promise = PromiseCreator::lambda([actor_id = actor_id(this)](Result> r_http_query) { send_closure(actor_id, &GoogleDnsResolver::on_result, std::move(r_http_query)); }); wget_ = create_actor( @@ -58,7 +58,7 @@ class GoogleDnsResolver : public Actor { SslStream::VerifyPeer::Off); } - static Result get_ip_address(Result r_http_query) { + static Result get_ip_address(Result> r_http_query) { TRY_RESULT(http_query, std::move(r_http_query)); TRY_RESULT(json_value, json_decode(http_query->content_)); if (json_value.type() != JsonValue::Type::Object) { @@ -79,7 +79,7 @@ class GoogleDnsResolver : public Actor { return ip; } - void on_result(Result r_http_query) { + void on_result(Result> r_http_query) { auto end_time = Time::now(); auto result = get_ip_address(std::move(r_http_query)); VLOG(dns_resolver) << "Init IPv" << (prefer_ipv6_ ? "6" : "4") << " host = " << host_ << " in " diff --git a/tdnet/td/net/HttpConnectionBase.h b/tdnet/td/net/HttpConnectionBase.h index ab68d9a0..ccf968c8 100644 --- a/tdnet/td/net/HttpConnectionBase.h +++ b/tdnet/td/net/HttpConnectionBase.h @@ -21,6 +21,7 @@ namespace td { namespace detail { + class HttpConnectionBase : public Actor { public: void write_next(BufferSlice buffer); @@ -50,7 +51,7 @@ class HttpConnectionBase : public Actor { size_t max_files_; int32 idle_timeout_; HttpReader reader_; - HttpQueryPtr current_query_; + unique_ptr current_query_; bool close_after_write_ = false; void live_event(); @@ -60,8 +61,9 @@ class HttpConnectionBase : public Actor { void timeout_expired() override; void loop() override; - virtual void on_query(HttpQueryPtr) = 0; + virtual void on_query(unique_ptr query) = 0; virtual void on_error(Status error) = 0; }; + } // namespace detail } // namespace td diff --git a/tdnet/td/net/HttpInboundConnection.cpp b/tdnet/td/net/HttpInboundConnection.cpp index 6eabd642..ea0207c1 100644 --- a/tdnet/td/net/HttpInboundConnection.cpp +++ b/tdnet/td/net/HttpInboundConnection.cpp @@ -18,7 +18,7 @@ HttpInboundConnection::HttpInboundConnection(SocketFd fd, size_t max_post_size, , callback_(std::move(callback)) { } -void HttpInboundConnection::on_query(HttpQueryPtr query) { +void HttpInboundConnection::on_query(unique_ptr query) { CHECK(!callback_.empty()); send_closure(callback_, &Callback::handle, std::move(query), ActorOwn(actor_id(this))); } diff --git a/tdnet/td/net/HttpInboundConnection.h b/tdnet/td/net/HttpInboundConnection.h index 070da2c0..1c07f586 100644 --- a/tdnet/td/net/HttpInboundConnection.h +++ b/tdnet/td/net/HttpInboundConnection.h @@ -20,7 +20,7 @@ class HttpInboundConnection final : public detail::HttpConnectionBase { public: class Callback : public Actor { public: - virtual void handle(HttpQueryPtr query, ActorOwn connection) = 0; + virtual void handle(unique_ptr query, ActorOwn connection) = 0; }; // Inherited interface // void write_next(BufferSlice buffer); @@ -31,7 +31,7 @@ class HttpInboundConnection final : public detail::HttpConnectionBase { ActorShared callback); private: - void on_query(HttpQueryPtr query) override; + void on_query(unique_ptr query) override; void on_error(Status error) override; void hangup() override { callback_.release(); diff --git a/tdnet/td/net/HttpOutboundConnection.cpp b/tdnet/td/net/HttpOutboundConnection.cpp index 517abbec..0e1b1990 100644 --- a/tdnet/td/net/HttpOutboundConnection.cpp +++ b/tdnet/td/net/HttpOutboundConnection.cpp @@ -10,7 +10,7 @@ namespace td { -void HttpOutboundConnection::on_query(HttpQueryPtr query) { +void HttpOutboundConnection::on_query(unique_ptr query) { CHECK(!callback_.empty()); send_closure(callback_, &Callback::handle, std::move(query)); } diff --git a/tdnet/td/net/HttpOutboundConnection.h b/tdnet/td/net/HttpOutboundConnection.h index 2fb9ee92..875fb1b9 100644 --- a/tdnet/td/net/HttpOutboundConnection.h +++ b/tdnet/td/net/HttpOutboundConnection.h @@ -21,7 +21,7 @@ class HttpOutboundConnection final : public detail::HttpConnectionBase { public: class Callback : public Actor { public: - virtual void handle(HttpQueryPtr query) = 0; + virtual void handle(unique_ptr query) = 0; virtual void on_connection_error(Status error) = 0; // TODO rename to on_error }; HttpOutboundConnection(SocketFd fd, SslStream ssl_stream, size_t max_post_size, size_t max_files, int32 idle_timeout, @@ -36,7 +36,7 @@ class HttpOutboundConnection final : public detail::HttpConnectionBase { // void write_error(Status error); private: - void on_query(HttpQueryPtr query) override; + void on_query(unique_ptr query) override; void on_error(Status error) override; void hangup() override { callback_.release(); diff --git a/tdnet/td/net/HttpQuery.h b/tdnet/td/net/HttpQuery.h index cde91dc4..b2483208 100644 --- a/tdnet/td/net/HttpQuery.h +++ b/tdnet/td/net/HttpQuery.h @@ -42,8 +42,6 @@ class HttpQuery { int get_retry_after() const; }; -using HttpQueryPtr = unique_ptr; - StringBuilder &operator<<(StringBuilder &sb, const HttpQuery &q); } // namespace td diff --git a/tdnet/td/net/Wget.cpp b/tdnet/td/net/Wget.cpp index 189fe04d..94c7a0c6 100644 --- a/tdnet/td/net/Wget.cpp +++ b/tdnet/td/net/Wget.cpp @@ -22,8 +22,8 @@ namespace td { -Wget::Wget(Promise promise, string url, std::vector> headers, int32 timeout_in, - int32 ttl, bool prefer_ipv6, SslStream::VerifyPeer verify_peer) +Wget::Wget(Promise> promise, string url, std::vector> headers, + int32 timeout_in, int32 ttl, bool prefer_ipv6, SslStream::VerifyPeer verify_peer) : promise_(std::move(promise)) , input_url_(std::move(url)) , headers_(std::move(headers)) @@ -90,7 +90,7 @@ void Wget::loop() { } } -void Wget::handle(HttpQueryPtr result) { +void Wget::handle(unique_ptr result) { on_ok(std::move(result)); } @@ -98,8 +98,9 @@ void Wget::on_connection_error(Status error) { on_error(std::move(error)); } -void Wget::on_ok(HttpQueryPtr http_query_ptr) { +void Wget::on_ok(unique_ptr http_query_ptr) { CHECK(promise_); + CHECK(http_query_ptr); if ((http_query_ptr->code_ == 301 || http_query_ptr->code_ == 302 || http_query_ptr->code_ == 307 || http_query_ptr->code_ == 308) && ttl_ > 0) { diff --git a/tdnet/td/net/Wget.h b/tdnet/td/net/Wget.h index 3297970e..edf46779 100644 --- a/tdnet/td/net/Wget.h +++ b/tdnet/td/net/Wget.h @@ -22,23 +22,23 @@ namespace td { class Wget : public HttpOutboundConnection::Callback { public: - explicit Wget(Promise promise, string url, std::vector> headers = {}, + explicit Wget(Promise> promise, string url, std::vector> headers = {}, int32 timeout_in = 10, int32 ttl = 3, bool prefer_ipv6 = false, SslStream::VerifyPeer verify_peer = SslStream::VerifyPeer::On); private: Status try_init(); void loop() override; - void handle(HttpQueryPtr result) override; + void handle(unique_ptr result) override; void on_connection_error(Status error) override; - void on_ok(HttpQueryPtr http_query_ptr); + void on_ok(unique_ptr http_query_ptr); void on_error(Status error); void tear_down() override; void start_up() override; void timeout_expired() override; - Promise promise_; + Promise> promise_; ActorOwn connection_; string input_url_; std::vector> headers_;