diff --git a/benchmark/bench_db.cpp b/benchmark/bench_db.cpp index dc768e9d9..fa10492e9 100644 --- a/benchmark/bench_db.cpp +++ b/benchmark/bench_db.cpp @@ -200,7 +200,7 @@ class SeqKvBench : public td::Benchmark { td::SeqKeyValue kv; void run(int n) override { for (int i = 0; i < n; i++) { - kv.set(td::to_string(i % 10), td::to_string(i)); + kv.set(PSLICE() << i % 10, PSLICE() << i); } } }; diff --git a/benchmark/bench_misc.cpp b/benchmark/bench_misc.cpp index 68cf4819d..1674e9ba9 100644 --- a/benchmark/bench_misc.cpp +++ b/benchmark/bench_misc.cpp @@ -219,7 +219,7 @@ class CreateFileBench : public Benchmark { } void run(int n) override { for (int i = 0; i < n; i++) { - FileFd::open("A/" + to_string(i), FileFd::Flags::Write | FileFd::Flags::Create).move_as_ok().close(); + FileFd::open(PSLICE() << "A/" << i, FileFd::Flags::Write | FileFd::Flags::Create).move_as_ok().close(); } } void tear_down() override { @@ -232,6 +232,7 @@ class CreateFileBench : public Benchmark { }); } }; + class WalkPathBench : public Benchmark { string get_description() const override { return "walk_path"; @@ -239,7 +240,7 @@ class WalkPathBench : public Benchmark { void start_up_n(int n) override { mkdir("A").ensure(); for (int i = 0; i < n; i++) { - FileFd::open("A/" + to_string(i), FileFd::Flags::Write | FileFd::Flags::Create).move_as_ok().close(); + FileFd::open(PSLICE() << "A/" << i, FileFd::Flags::Write | FileFd::Flags::Create).move_as_ok().close(); } } void run(int n) override { diff --git a/td/mtproto/Handshake.cpp b/td/mtproto/Handshake.cpp index d8f47bba6..e7a5aeb03 100644 --- a/td/mtproto/Handshake.cpp +++ b/td/mtproto/Handshake.cpp @@ -109,7 +109,7 @@ Status AuthKeyHandshake::on_res_pq(Slice message, Callback *connection, PublicRs // req_DH_params#d712e4be nonce:int128 server_nonce:int128 p:string q:string public_key_fingerprint:long // encrypted_data:string = Server_DH_Params - mtproto_api::req_DH_params req_dh_params(nonce, server_nonce, p, q, rsa_fingerprint, std::move(encrypted_data)); + mtproto_api::req_DH_params req_dh_params(nonce, server_nonce, p, q, rsa_fingerprint, encrypted_data); send(connection, create_storer(req_dh_params)); state_ = ServerDHParams; @@ -202,7 +202,7 @@ Status AuthKeyHandshake::on_server_dh_params(Slice message, Callback *connection tmp_KDF(server_nonce, new_nonce, &tmp_aes_key, &tmp_aes_iv); aes_ige_encrypt(tmp_aes_key, &tmp_aes_iv, encrypted_data, encrypted_data); - mtproto_api::set_client_DH_params set_client_dh_params(nonce, server_nonce, std::move(encrypted_data_str)); + mtproto_api::set_client_DH_params set_client_dh_params(nonce, server_nonce, encrypted_data); send(connection, create_storer(set_client_dh_params)); auth_key = AuthKey(dh_auth_key_id(auth_key_str), std::move(auth_key_str)); diff --git a/td/telegram/ContactsManager.cpp b/td/telegram/ContactsManager.cpp index 4bdc08e95..8408ae5eb 100644 --- a/td/telegram/ContactsManager.cpp +++ b/td/telegram/ContactsManager.cpp @@ -5185,7 +5185,7 @@ void ContactsManager::on_binlog_user_event(BinlogEvent &&event) { } string ContactsManager::get_user_database_key(UserId user_id) { - return "us" + to_string(user_id.get()); + return PSTRING() << "us" << user_id.get(); } string ContactsManager::get_user_database_value(const User *u) { @@ -5434,7 +5434,7 @@ void ContactsManager::on_binlog_chat_event(BinlogEvent &&event) { } string ContactsManager::get_chat_database_key(ChatId chat_id) { - return "gr" + to_string(chat_id.get()); + return PSTRING() << "gr" << chat_id.get(); } string ContactsManager::get_chat_database_value(const Chat *c) { @@ -5657,7 +5657,7 @@ void ContactsManager::on_binlog_channel_event(BinlogEvent &&event) { } string ContactsManager::get_channel_database_key(ChannelId channel_id) { - return "ch" + to_string(channel_id.get()); + return PSTRING() << "ch" << channel_id.get(); } string ContactsManager::get_channel_database_value(const Channel *c) { @@ -5874,7 +5874,7 @@ void ContactsManager::on_binlog_secret_chat_event(BinlogEvent &&event) { } string ContactsManager::get_secret_chat_database_key(SecretChatId secret_chat_id) { - return "sc" + to_string(secret_chat_id.get()); + return PSTRING() << "sc" << secret_chat_id.get(); } string ContactsManager::get_secret_chat_database_value(const SecretChat *c) { diff --git a/td/telegram/InlineQueriesManager.cpp b/td/telegram/InlineQueriesManager.cpp index 9a2625926..1554d0650 100644 --- a/td/telegram/InlineQueriesManager.cpp +++ b/td/telegram/InlineQueriesManager.cpp @@ -645,7 +645,7 @@ void InlineQueriesManager::answer_inline_query(int64 inline_query_id, bool is_pe type = "geo"; id = std::move(location->id_); title = std::move(location->title_); - description = to_string(location->location_->latitude_) + " " + to_string(location->location_->longitude_); + description = PSTRING() << location->location_->latitude_ << ' ' << location->location_->longitude_; thumbnail_url = std::move(location->thumbnail_url_); // duration = location->live_period_; if (!thumbnail_url.empty()) { diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 109254ad8..1e18f4b16 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -25246,8 +25246,8 @@ void MessagesManager::update_last_dialog_date() { } if (G()->parameters().use_message_db && last_database_server_dialog_date_ < last_server_dialog_date_) { - auto last_server_dialog_date_string = to_string(last_server_dialog_date_.get_order()) + " " + - to_string(last_server_dialog_date_.get_dialog_id().get()); + auto last_server_dialog_date_string = PSTRING() << last_server_dialog_date_.get_order() << ' ' + << last_server_dialog_date_.get_dialog_id().get(); G()->td_db()->get_binlog_pmc()->set("last_server_dialog_date", last_server_dialog_date_string); LOG(INFO) << "Save last server dialog date " << last_server_dialog_date_string; last_database_server_dialog_date_ = last_server_dialog_date_; @@ -25385,7 +25385,7 @@ void MessagesManager::load_notification_settings() { string MessagesManager::get_channel_pts_key(DialogId dialog_id) { CHECK(dialog_id.get_type() == DialogType::Channel); auto channel_id = dialog_id.get_channel_id(); - return "ch.p" + to_string(channel_id.get()); + return PSTRING() << "ch.p" << channel_id.get(); } int32 MessagesManager::load_channel_pts(DialogId dialog_id) const { diff --git a/td/telegram/SecureValue.cpp b/td/telegram/SecureValue.cpp index 29c86b565..cb85abb66 100644 --- a/td/telegram/SecureValue.cpp +++ b/td/telegram/SecureValue.cpp @@ -316,7 +316,7 @@ EncryptedSecureFile get_encrypted_secure_file(FileManager *file_manager, } result.file.file_id = file_manager->register_remote( FullRemoteFileLocation(FileType::Secure, secure_file->id_, secure_file->access_hash_, DcId::internal(dc_id)), - FileLocationSource::FromServer, DialogId(), 0, secure_file->size_, to_string(secure_file->id_) + ".jpg"); + FileLocationSource::FromServer, DialogId(), 0, secure_file->size_, PSTRING() << secure_file->id_ << ".jpg"); result.file.date = secure_file->date_; if (result.file.date < 0) { LOG(ERROR) << "Receive wrong date " << result.file.date; diff --git a/td/telegram/StickersManager.cpp b/td/telegram/StickersManager.cpp index f04bb2a71..6e909a70c 100644 --- a/td/telegram/StickersManager.cpp +++ b/td/telegram/StickersManager.cpp @@ -1025,7 +1025,7 @@ std::pair StickersManager::on_get_sticker_document(tl_object_ptr< int64 document_id = document->id_; FileId sticker_id = td_->file_manager_->register_remote( FullRemoteFileLocation(FileType::Sticker, document_id, document->access_hash_, DcId::internal(document->dc_id_)), - FileLocationSource::FromServer, DialogId(), document->size_, 0, to_string(document_id) + ".webp"); + FileLocationSource::FromServer, DialogId(), document->size_, 0, PSTRING() << document_id << ".webp"); PhotoSize thumbnail = get_photo_size(td_->file_manager_.get(), FileType::Thumbnail, 0, 0, DialogId(), std::move(document->thumb_), has_webp_thumbnail(sticker)); @@ -1471,7 +1471,7 @@ int64 StickersManager::on_get_sticker_set(tl_object_ptris_changed = true; if (installed_sticker_sets_hints_[s->is_masks].has_key(set_id)) { - installed_sticker_sets_hints_[s->is_masks].add(set_id, s->title + " " + s->short_name); + installed_sticker_sets_hints_[s->is_masks].add(set_id, PSLICE() << s->title << ' ' << s->short_name); } } if (s->short_name != set->short_name_) { @@ -1482,7 +1482,7 @@ int64 StickersManager::on_get_sticker_set(tl_object_ptris_changed = true; if (installed_sticker_sets_hints_[s->is_masks].has_key(set_id)) { - installed_sticker_sets_hints_[s->is_masks].add(set_id, s->title + " " + s->short_name); + installed_sticker_sets_hints_[s->is_masks].add(set_id, PSLICE() << s->title << ' ' << s->short_name); } } @@ -2267,8 +2267,8 @@ void StickersManager::on_update_sticker_set(StickerSet *sticker_set, bool is_ins need_update_installed_sticker_sets_[sticker_set->is_masks] = true; if (is_added) { - installed_sticker_sets_hints_[sticker_set->is_masks].add(sticker_set->id, - sticker_set->title + " " + sticker_set->short_name); + installed_sticker_sets_hints_[sticker_set->is_masks].add( + sticker_set->id, PSLICE() << sticker_set->title << ' ' << sticker_set->short_name); sticker_set_ids.insert(sticker_set_ids.begin(), sticker_set->id); } else { installed_sticker_sets_hints_[sticker_set->is_masks].remove(sticker_set->id); @@ -2396,11 +2396,11 @@ void StickersManager::on_load_installed_sticker_sets_finished(bool is_masks, vec } string StickersManager::get_sticker_set_database_key(int64 set_id) { - return "ss" + to_string(set_id); + return PSTRING() << "ss" << set_id; } string StickersManager::get_full_sticker_set_database_key(int64 set_id) { - return "ssf" + to_string(set_id); + return PSTRING() << "ssf" << set_id; } string StickersManager::get_sticker_set_database_value(const StickerSet *s, bool with_stickers) { diff --git a/td/telegram/StorageManager.cpp b/td/telegram/StorageManager.cpp index bd5721277..8d04bf318 100644 --- a/td/telegram/StorageManager.cpp +++ b/td/telegram/StorageManager.cpp @@ -139,8 +139,8 @@ int64 StorageManager::get_db_size() { }; G()->td_db()->with_db_path([&](CSlice path) { add_path(path).ignore(); }); - add_path(G()->parameters().database_directory + "log").ignore(); - add_path(G()->parameters().database_directory + "log.old").ignore(); + add_path(PSLICE() << G()->parameters().database_directory << "log").ignore(); + add_path(PSLICE() << G()->parameters().database_directory << "log.old").ignore(); return size; } diff --git a/td/telegram/WebPagesManager.cpp b/td/telegram/WebPagesManager.cpp index 8f54a9ab1..127487fa0 100644 --- a/td/telegram/WebPagesManager.cpp +++ b/td/telegram/WebPagesManager.cpp @@ -1773,7 +1773,7 @@ WebPageId WebPagesManager::get_web_page_instant_view(WebPageId web_page_id, bool } string WebPagesManager::get_web_page_instant_view_database_key(WebPageId web_page_id) { - return "wpiv" + to_string(web_page_id.get()); + return PSTRING() << "wpiv" << web_page_id.get(); } void WebPagesManager::load_web_page_instant_view(WebPageId web_page_id, bool force_full, Promise &&promise) { @@ -2675,7 +2675,7 @@ void WebPagesManager::on_binlog_web_page_event(BinlogEvent &&event) { } string WebPagesManager::get_web_page_database_key(WebPageId web_page_id) { - return "wp" + to_string(web_page_id.get()); + return PSTRING() << "wp" << web_page_id.get(); } void WebPagesManager::on_save_web_page_to_database(WebPageId web_page_id, bool success) { diff --git a/td/telegram/files/FileDb.cpp b/td/telegram/files/FileDb.cpp index b888d956c..ad8a33170 100644 --- a/td/telegram/files/FileDb.cpp +++ b/td/telegram/files/FileDb.cpp @@ -86,7 +86,7 @@ class FileDb : public FileDbInterface { current_pmc_id_ = id; } - pmc.erase("file" + to_string(id)); + pmc.erase(PSTRING() << "file" << id); LOG(DEBUG) << "ERASE " << format::as_hex_dump<4>(Slice(PSLICE() << "file" << to_string(id))); if (!remote_key.empty()) { @@ -114,7 +114,7 @@ class FileDb : public FileDbInterface { current_pmc_id_ = id; } - pmc.set("file" + to_string(id), file_data); + pmc.set(PSTRING() << "file" << id, file_data); if (!remote_key.empty()) { pmc.set(remote_key, to_string(id)); @@ -162,7 +162,7 @@ class FileDb : public FileDbInterface { } void do_store_file_data_ref(Id id, Id new_id) { - file_pmc().set("file" + to_string(id), "@@" + to_string(new_id)); + file_pmc().set(PSTRING() << "file" << id, PSTRING() << "@@" << new_id); } }; diff --git a/td/telegram/files/FileManager.cpp b/td/telegram/files/FileManager.cpp index b18c73a61..58d7954ef 100644 --- a/td/telegram/files/FileManager.cpp +++ b/td/telegram/files/FileManager.cpp @@ -1854,7 +1854,7 @@ Result FileManager::from_persistent_id(CSlice persistent_id, FileType fi auto r_binary = base64url_decode(persistent_id); if (r_binary.is_error()) { - return Status::Error(10, "Wrong remote file id specified: " + r_binary.error().message().str()); + return Status::Error(10, PSLICE() << "Wrong remote file id specified: " << r_binary.error().message()); } auto binary = r_binary.move_as_ok(); if (binary.empty()) { diff --git a/td/telegram/net/Session.cpp b/td/telegram/net/Session.cpp index a88b02636..c014a0b2a 100644 --- a/td/telegram/net/Session.cpp +++ b/td/telegram/net/Session.cpp @@ -435,7 +435,7 @@ void Session::on_closed(Status status) { VLOG(net_query) << "resend query (on_disconnected, no ack) " << query; query->set_message_id(0); query->cancel_slot_.clear_event(); - query->set_error(Status::Error(500, "Session failed: " + status.message().str()), + query->set_error(Status::Error(500, PSLICE() << "Session failed: " << status.message()), current_info_->connection->get_name().str()); return_query(std::move(query)); it = sent_queries_.erase(it); diff --git a/tdactor/test/actors_workers.cpp b/tdactor/test/actors_workers.cpp index 8a13f15ba..3809d0072 100644 --- a/tdactor/test/actors_workers.cpp +++ b/tdactor/test/actors_workers.cpp @@ -117,7 +117,7 @@ void test_workers(int threads_n, int workers_n, int queries_n, int query_size) { std::vector> workers; for (int i = 0; i < workers_n; i++) { int thread_id = threads_n ? i % (threads_n - 1) + 2 : 0; - workers.push_back(sched.create_actor_unsafe(thread_id, "worker" + to_string(i)).release()); + workers.push_back(sched.create_actor_unsafe(thread_id, PSLICE() << "worker" << i).release()); } sched.create_actor_unsafe(threads_n ? 1 : 0, "manager", queries_n, query_size, std::move(workers)).release(); diff --git a/tddb/td/db/binlog/ConcurrentBinlog.cpp b/tddb/td/db/binlog/ConcurrentBinlog.cpp index b8a0ec7a3..3a3a3c2e4 100644 --- a/tddb/td/db/binlog/ConcurrentBinlog.cpp +++ b/tddb/td/db/binlog/ConcurrentBinlog.cpp @@ -179,8 +179,8 @@ Result ConcurrentBinlog::init(string path, const Callback &callback, void ConcurrentBinlog::init_impl(std::unique_ptr binlog, int32 scheduler_id) { path_ = binlog->get_path().str(); last_id_ = binlog->peek_next_id(); - binlog_actor_ = - create_actor_on_scheduler("Binlog " + path_, scheduler_id, std::move(binlog), last_id_); + binlog_actor_ = create_actor_on_scheduler(PSLICE() << "Binlog " << path_, scheduler_id, + std::move(binlog), last_id_); } void ConcurrentBinlog::close_impl(Promise<> promise) { diff --git a/tdnet/td/net/HttpHeaderCreator.h b/tdnet/td/net/HttpHeaderCreator.h index d3e84e5db..ffde46f94 100644 --- a/tdnet/td/net/HttpHeaderCreator.h +++ b/tdnet/td/net/HttpHeaderCreator.h @@ -45,7 +45,7 @@ class HttpHeaderCreator { add_header("Content-Type", type); } void set_content_size(size_t size) { - add_header("Content-Length", to_string(size)); + add_header("Content-Length", PSLICE() << size); } void set_keep_alive() { add_header("Connection", "keep-alive"); diff --git a/tdnet/td/net/HttpReader.cpp b/tdnet/td/net/HttpReader.cpp index f67cbd5b8..778d7eaec 100644 --- a/tdnet/td/net/HttpReader.cpp +++ b/tdnet/td/net/HttpReader.cpp @@ -70,7 +70,7 @@ Result HttpReader::read_next(HttpQuery *query) { if (state_ != ReadHeaders) { flow_source_.wakeup(); if (flow_sink_.is_ready() && flow_sink_.status().is_error()) { - return Status::Error(400, "Bad Request: " + flow_sink_.status().message().str()); + return Status::Error(400, PSLICE() << "Bad Request: " << flow_sink_.status().message()); } need_size = flow_source_.get_need_size(); if (need_size == 0) { @@ -603,7 +603,7 @@ Status HttpReader::parse_json_parameters(MutableSlice parameters) { } auto r_key = json_string_decode(parser); if (r_key.is_error()) { - return Status::Error(400, string("Bad Request: can't parse parameter name: ") + r_key.error().message().c_str()); + return Status::Error(400, PSLICE() << "Bad Request: can't parse parameter name: " << r_key.error().message()); } parser.skip_whitespaces(); if (!parser.try_skip(':')) { @@ -625,8 +625,7 @@ Status HttpReader::parse_json_parameters(MutableSlice parameters) { } }(); if (r_value.is_error()) { - return Status::Error(400, - string("Bad Request: can't parse parameter value: ") + r_value.error().message().c_str()); + return Status::Error(400, PSLICE() << "Bad Request: can't parse parameter value: " << r_value.error().message()); } query_->args_.emplace_back(r_key.move_as_ok(), r_value.move_as_ok()); @@ -808,7 +807,7 @@ void HttpReader::delete_temp_file(CSlice file_name) { if (parent.size() >= prefix_length + 7 && parent.substr(parent.size() - prefix_length - 7, prefix_length) == TEMP_DIRECTORY_PREFIX) { LOG(DEBUG) << "Unlink temporary directory " << parent; - rmdir(Slice(parent.data(), parent.size() - 1).str()).ignore(); + rmdir(PSLICE() << Slice(parent.data(), parent.size() - 1)).ignore(); } } diff --git a/tdutils/td/utils/FileLog.cpp b/tdutils/td/utils/FileLog.cpp index e3c84f171..922be637b 100644 --- a/tdutils/td/utils/FileLog.cpp +++ b/tdutils/td/utils/FileLog.cpp @@ -59,7 +59,7 @@ void FileLog::append(CSlice cslice, int log_level) { } if (size_ > rotate_threshold_) { - auto status = rename(path_, path_ + ".old"); + auto status = rename(path_, PSLICE() << path_ << ".old"); if (status.is_error()) { process_fatal_error(status.message()); } diff --git a/tdutils/td/utils/Status.h b/tdutils/td/utils/Status.h index 2b83ab9ee..08edc5354 100644 --- a/tdutils/td/utils/Status.h +++ b/tdutils/td/utils/Status.h @@ -150,7 +150,6 @@ class Status { #endif break; default: - LOG(FATAL) << "Unknown status type: " << static_cast(info.error_type); UNREACHABLE(); break; } @@ -218,7 +217,6 @@ class Status { return winerror_to_string(info.error_code); #endif default: - LOG(FATAL) << "Unknown status type: " << static_cast(info.error_type); UNREACHABLE(); return ""; } diff --git a/tdutils/td/utils/misc.h b/tdutils/td/utils/misc.h index b99008aa5..0e221cc74 100644 --- a/tdutils/td/utils/misc.h +++ b/tdutils/td/utils/misc.h @@ -235,7 +235,7 @@ std::enable_if_t::value, T> to_integer(Slice str) { template Result to_integer_safe(Slice str) { auto res = to_integer(str); - if (to_string(res) != str) { + if ((PSLICE() << res) != str) { return Status::Error(PSLICE() << "Can't parse \"" << str << "\" as number"); } return res; diff --git a/tdutils/td/utils/port/path.cpp b/tdutils/td/utils/port/path.cpp index 3b688ba3e..f5326918f 100644 --- a/tdutils/td/utils/port/path.cpp +++ b/tdutils/td/utils/port/path.cpp @@ -54,7 +54,7 @@ Status mkpath(CSlice path, int32 mode) { Status last_error = Status::OK(); for (size_t i = 1; i < path.size(); i++) { if (path[i] == TD_DIR_SLASH) { - last_error = mkdir(path.substr(0, i).str(), mode); + last_error = mkdir(PSLICE() << path.substr(0, i), mode); if (last_error.is_error() && first_error.is_ok()) { first_error = last_error.clone(); } diff --git a/test/secret.cpp b/test/secret.cpp index 85a3d3fba..c7d65de79 100644 --- a/test/secret.cpp +++ b/test/secret.cpp @@ -616,7 +616,7 @@ class Master : public Actor { parent_ = parent.get(); parent_token_ = parent.token(); actor_ = create_actor( - "SecretChat " + name_, 123, + PSLICE() << "SecretChat " << name_, 123, std::make_unique(binlog_, key_value_, close_flag_, std::move(parent)), true); on_binlog_replay_finish(); } @@ -698,7 +698,7 @@ class Master : public Actor { key_value_->external_init_finish(binlog_); actor_ = create_actor( - "SecretChat " + name_, 123, + PSLICE() << "SecretChat " << name_, 123, std::make_unique(binlog_, key_value_, close_flag_, ActorShared(parent_, parent_token_)), true);