1 //
2 // Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2021
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 #pragma once
8 
9 #include "td/utils/common.h"
10 #include "td/utils/StringBuilder.h"
11 #include "td/utils/tl_helpers.h"
12 
13 #include <type_traits>
14 
15 namespace td {
16 
17 class MessageTtlSetting {
18   int32 ttl_period_ = 0;
19 
20   friend StringBuilder &operator<<(StringBuilder &string_builder, const MessageTtlSetting &message_ttl_setting);
21 
22   friend bool operator==(const MessageTtlSetting &lhs, const MessageTtlSetting &rhs);
23 
24  public:
25   MessageTtlSetting() = default;
26 
27   template <class T, typename = std::enable_if_t<std::is_convertible<T, int32>::value>>
28   MessageTtlSetting(T ttl_period) = delete;
29 
MessageTtlSetting(int32 ttl_period)30   explicit MessageTtlSetting(int32 ttl_period) : ttl_period_(ttl_period) {
31   }
32 
33   bool is_empty() const;
34 
35   int32 get_message_ttl_setting_object() const;
36 
37   template <class StorerT>
store(StorerT & storer)38   void store(StorerT &storer) const {
39     td::store(ttl_period_, storer);
40   }
41 
42   template <class ParserT>
parse(ParserT & parser)43   void parse(ParserT &parser) {
44     td::parse(ttl_period_, parser);
45   }
46 };
47 
48 bool operator==(const MessageTtlSetting &lhs, const MessageTtlSetting &rhs);
49 
50 inline bool operator!=(const MessageTtlSetting &lhs, const MessageTtlSetting &rhs) {
51   return !(lhs == rhs);
52 }
53 
54 StringBuilder &operator<<(StringBuilder &string_builder, const MessageTtlSetting &message_ttl_setting);
55 
56 }  // namespace td
57