Daniel Zhang
runBlocking { withTimeoutOrNull(1000) { inputs.asSequence().repeat().asFlow() .rateLimiter(rateLimiter) .map { executeInput(it) } .toList() } } val rateLimiter = RateLimiter.of( properties.name, RateLimiterConfig .custom() .limitForPeriod(properties.rateLimiter.limitForPeriod) .limitRefreshPeriod(properties.rateLimiter.limitRefreshPeriod) .timeoutDuration(properties.rateLimiter.timeoutDuration) .build() ) /** * @see <a href="<https://stackoverflow.com/questions/48007311/how-do-i-infinitely-repeat-a-sequence-in-kotlin>">Infinite Sequence</a> */ private fun <T> Sequence<T>.repeat() = sequence { while (true) yieldAll(this@repeat) }
A modern programming language that makes developers happier.