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