Hi, I have been looking at various packages to understand how one goes about implementing things in Go. I have been learning a great deal just by getting my head around code written by smarter devs than I'm ever likely to be ;)
Whilst looking at golang/oauth2, two lines of code handling token expiry led me to discover about time.Time's use of both wall and monotonic clocks. I realised that either I had failed to understand something or the code was wrong. I'm assuming it's the former, so hopefully somebody can explain it to me... In oauth2/internal/token.go, doTokenRoudnTrip sets the Token.Expiry as follows: token.Expiry = time.Now().Add(time.Duration(expires) * time.Second) In oauth2/token.go, the Token.expired function returns this: return t.Expiry.Round(0).Add(-expiryDelta).Before(timeNow()) If I have read the time package documentation correctly, the monotonic clock reading is intended for time measurements. In particular, it provides robust behaviour for functions such as Before(). So I do not understand why the monotonic reading is stripped from the time value with Round(0) before invoking Before() in the code above. As I read it, the token.Expiry has a monotonic clock reading (now + duration) which is then stripped when evaluated against Before(now) later on... does this not make the code susceptible to issues when system time is being adjusted? What is the rationale for Round(0) in this case? -- ise -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/b7b70386-0f28-448a-bd95-67d76e273219%40googlegroups.com.