tdesktop/Telegram/SourceFiles/mtproto/details/mtproto_dc_key_checker.h

45 lines
967 B
C
Raw Normal View History

2019-11-13 14:12:04 +00:00
/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#pragma once
#include "mtproto/core_types.h"
2019-11-18 09:28:14 +00:00
#include "mtproto/mtproto_auth_key.h"
2019-11-13 14:12:04 +00:00
namespace MTP {
class Instance;
} // namespace MTP
namespace MTP::details {
enum class DcKeyState {
MaybeExisting,
DefinitelyDestroyed,
};
2019-11-13 14:12:04 +00:00
class DcKeyChecker final {
public:
DcKeyChecker(
not_null<Instance*> instance,
ShiftedDcId shiftedDcId,
const AuthKeyPtr &persistentKey);
[[nodiscard]] SecureRequest prepareRequest(
const AuthKeyPtr &temporaryKey,
uint64 sessionId);
bool handleResponse(MTPlong requestMsgId, const mtpBuffer &response);
2019-11-13 14:12:04 +00:00
private:
const not_null<Instance*> _instance;
const ShiftedDcId _shiftedDcId = 0;
const AuthKeyPtr _persistentKey;
mtpMsgId _requestMsgId = 0;
2019-11-13 14:12:04 +00:00
};
} // namespace MTP::details