| 530 | } |
| 531 | |
| 532 | void writeMtp(int32 dc, const QString &v) { |
| 533 | const auto expanded = [&] { |
| 534 | const auto bare = MTP::isTemporaryDcId(dc) |
| 535 | ? MTP::getRealIdFromTemporaryDcId(dc) |
| 536 | : MTP::BareDcId(dc); |
| 537 | const auto base = (MTP::isTemporaryDcId(dc) ? "temporary_" : "") |
| 538 | + QString::number(bare); |
| 539 | const auto shift = MTP::GetDcIdShift(dc); |
| 540 | if (shift == 0) { |
| 541 | return base + "_main"; |
| 542 | } else if (shift == MTP::kExportDcShift) { |
| 543 | return base + "_export"; |
| 544 | } else if (shift == MTP::kExportMediaDcShift) { |
| 545 | return base + "_export_download"; |
| 546 | } else if (shift == MTP::kConfigDcShift) { |
| 547 | return base + "_config_enumeration"; |
| 548 | } else if (shift == MTP::kLogoutDcShift) { |
| 549 | return base + "_logout_guest"; |
| 550 | } else if (shift == MTP::kUpdaterDcShift) { |
| 551 | return base + "_download_update"; |
| 552 | } else if (shift == MTP::kGroupCallStreamDcShift) { |
| 553 | return base + "_stream"; |
| 554 | } else if (MTP::isDownloadDcId(dc)) { |
| 555 | const auto index = shift - MTP::kBaseDownloadDcShift; |
| 556 | return base + "_download" + QString::number(index); |
| 557 | } else if (MTP::isUploadDcId(dc)) { |
| 558 | const auto index = shift - MTP::kBaseUploadDcShift; |
| 559 | return base + "_upload" + QString::number(index); |
| 560 | } else if (shift >= MTP::kDestroyKeyStartDcShift) { |
| 561 | const auto index = shift - MTP::kDestroyKeyStartDcShift; |
| 562 | return base + "_key_destroyer" + QString::number(index); |
| 563 | } |
| 564 | return base + "_unknown" + QString::number(shift); |
| 565 | }(); |
| 566 | const auto msg = _logsEntryStart() |
| 567 | + u" (dc:%1) "_q.arg(expanded) |
| 568 | + v |
| 569 | + '\n'; |
| 570 | _logsWrite(LogDataMtp, msg); |
| 571 | } |
| 572 | |
| 573 | QString full() { |
| 574 | if (LogsData) { |
nothing calls this directly
no test coverage detected