1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

time: use Duration(C.INT64_MAX) as infinite (#10539)

This commit is contained in:
Uwe Krüger
2021-06-22 11:17:44 +02:00
committed by GitHub
parent dd6591b2f5
commit 72358833e0
10 changed files with 49 additions and 24 deletions

View File

@@ -225,3 +225,15 @@ pub fn wait(duration Duration) {
pub fn sleep(duration Duration) {
C.Sleep(int(duration / millisecond))
}
// some Windows system functions (e.g. `C.WaitForSingleObject()`) accept an `u32`
// value as *timeout in milliseconds* with the special value `u32(-1)` meaning "infinite"
pub fn (d Duration) sys_milliseconds() u32 {
if d >= u32(-1) * millisecond { // treat 4294967295000000 .. C.INT64_MAX as "infinite"
return u32(-1)
} else if d <= 0 {
return 0 // treat negative timeouts as 0 - consistent with Unix behaviour
} else {
return u32(d / millisecond)
}
}