mtpRequestId ConcurrentSender::RequestBuilder::send() { const auto requestId = GetNextRequestId(); const auto dcId = _dcId; const auto msCanWait = _canWait; const auto afterRequestId = _afterRequestId; _sender->senderRequestRegister(requestId, std::move(_handlers)); _sender->with_instance([ =, request = std::move(_serialized), done = std::make_shared<RPCDoneHandler>(_sender, _sender->_runner), fail = std::make_shared<RPCFailHandler>( _sender, _sender->_runner, _failSkipPolicy) ](not_null<Instance*> instance) mutable { instance->sendSerialized( requestId, std::move(request), RPCResponseHandler(std::move(done), std::move(fail)), dcId, msCanWait, afterRequestId); }); return requestId; }
void mtpLogoutOtherDCs() { QList<int32> dcs; { QMutexLocker lock(&_keysMapForWriteMutex); dcs = _keysMapForWrite.keys(); } for (int32 i = 0, cnt = dcs.size(); i != cnt; ++i) { if (dcs[i] != MTP::maindc()) { MTP::send(MTPauth_LogOut(), RPCResponseHandler(), dcs[i]); } } }