Life · 9 / 12

TTL без платформенных часов

Проверить точную границу истечения в commonMain

Средняяkmptestingtime

Реализуй ExpiringValue для общего кода. Часы внедряются интерфейсом и возвращают монотонные миллисекунды. Отсчёт начинается при создании. Значение доступно, пока elapsed < ttlMillis; ровно на границе оно уже истекло. TTL=0 означает немедленное истечение, отрицательный TTL запрещён.

Условия: один последовательный владелец; часы не идут назад; разность показаний помещается в Long. Долговременное сохранение этой временной отметки между запусками не требуется.

Проверки fake clock: старт 100, TTL=10 → на 100 и 109 вернуть value, на 110 и 111 вернуть null; нулевой TTL; отрицательный TTL. Нельзя обращаться к java.*, Android Context или системным часам внутри класса.

Кейс расширяет идею интерфейсной платформенной границы из KMP-блока draft/faq500.md.

Твой код
Решение