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

43 lines
885 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 {
class SerializedRequest;
enum class DcKeyBindState {
Success,
Failed,
DefinitelyDestroyed,
};
class DcKeyBinder final {
2019-11-13 14:12:04 +00:00
public:
explicit DcKeyBinder(AuthKeyPtr &&persistentKey);
[[nodiscard]] SerializedRequest prepareRequest(
const AuthKeyPtr &temporaryKey,
uint64 sessionId);
2019-11-22 09:06:48 +00:00
[[nodiscard]] DcKeyBindState handleResponse(const mtpBuffer &response);
[[nodiscard]] AuthKeyPtr persistentKey() const;
2019-11-13 14:12:04 +00:00
private:
AuthKeyPtr _persistentKey;
2019-11-13 14:12:04 +00:00
};
} // namespace MTP::details