Give names to MTProto session threads.

This commit is contained in:
John Preston 2019-12-12 16:26:26 +03:00
parent 8211c94a74
commit 7f26f81e4f

View File

@ -1454,15 +1454,19 @@ Session *Instance::Private::removeSession(ShiftedDcId shiftedDcId) {
not_null<QThread*> Instance::Private::getThreadForDc( not_null<QThread*> Instance::Private::getThreadForDc(
ShiftedDcId shiftedDcId) { ShiftedDcId shiftedDcId) {
static const auto EnsureStarted = [](std::unique_ptr<QThread> &thread) { static const auto EnsureStarted = [](
std::unique_ptr<QThread> &thread,
auto name) {
if (!thread) { if (!thread) {
thread = std::make_unique<QThread>(); thread = std::make_unique<QThread>();
thread->setObjectName(name());
thread->start(); thread->start();
} }
return thread.get(); return thread.get();
}; };
static const auto FindOne = []( static const auto FindOne = [](
std::vector<std::unique_ptr<QThread>> &threads, std::vector<std::unique_ptr<QThread>> &threads,
const char *prefix,
int index, int index,
bool shift) { bool shift) {
Expects(!threads.empty()); Expects(!threads.empty());
@ -1476,20 +1480,26 @@ not_null<QThread*> Instance::Private::getThreadForDc(
if (shift) { if (shift) {
index = (index + count / 2) % count; index = (index + count / 2) % count;
} }
return EnsureStarted(threads[index]); return EnsureStarted(threads[index], [=] {
return QString("MTP %1 Session (%2)").arg(prefix).arg(index);
});
}; };
if (shiftedDcId == BareDcId(shiftedDcId)) { if (shiftedDcId == BareDcId(shiftedDcId)) {
return EnsureStarted(_mainSessionThread); return EnsureStarted(_mainSessionThread, [] {
return QString("MTP Main Session");
});
} else if (isDownloadDcId(shiftedDcId)) { } else if (isDownloadDcId(shiftedDcId)) {
const auto index = GetDcIdShift(shiftedDcId) - kBaseDownloadDcShift; const auto index = GetDcIdShift(shiftedDcId) - kBaseDownloadDcShift;
const auto composed = index + BareDcId(shiftedDcId); const auto composed = index + BareDcId(shiftedDcId);
return FindOne(_fileSessionThreads, composed, false); return FindOne(_fileSessionThreads, "Download", composed, false);
} else if (isUploadDcId(shiftedDcId)) { } else if (isUploadDcId(shiftedDcId)) {
const auto index = GetDcIdShift(shiftedDcId) - kBaseUploadDcShift; const auto index = GetDcIdShift(shiftedDcId) - kBaseUploadDcShift;
const auto composed = index + BareDcId(shiftedDcId); const auto composed = index + BareDcId(shiftedDcId);
return FindOne(_fileSessionThreads, composed, true); return FindOne(_fileSessionThreads, "Upload", composed, true);
} }
return EnsureStarted(_otherSessionsThread); return EnsureStarted(_otherSessionsThread, [] {
return QString("MTP Other Session");
});
} }
void Instance::Private::scheduleKeyDestroy(ShiftedDcId shiftedDcId) { void Instance::Private::scheduleKeyDestroy(ShiftedDcId shiftedDcId) {