| 194 | } |
| 195 | |
| 196 | int64_t FormatHashFieldExpireResult(int64_t expire_at, uint64_t now, HashFieldExpireTimeMode time_mode) { |
| 197 | if (expire_at < 0) { |
| 198 | return expire_at; |
| 199 | } |
| 200 | |
| 201 | auto expire = static_cast<uint64_t>(expire_at); |
| 202 | switch (time_mode) { |
| 203 | case HashFieldExpireTimeMode::kRelativeSeconds: |
| 204 | return static_cast<int64_t>(CeilDiv1000(expire > now ? expire - now : 0)); |
| 205 | case HashFieldExpireTimeMode::kRelativeMilliseconds: |
| 206 | return static_cast<int64_t>(expire > now ? expire - now : 0); |
| 207 | case HashFieldExpireTimeMode::kAbsoluteSeconds: |
| 208 | return static_cast<int64_t>(CeilDiv1000(expire)); |
| 209 | case HashFieldExpireTimeMode::kAbsoluteMilliseconds: |
| 210 | return expire_at; |
| 211 | } |
| 212 | return -2; |
| 213 | } |
| 214 | |
| 215 | uint64_t GenerateHLenFlags(uint64_t flags, const std::vector<std::string> &args, const Config &config) { |
| 216 | bool needs_repair = false; |