From 174bc25afb7a24c9299d694143033062768ffc5a Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 25 Aug 2022 13:14:45 +0530 Subject: [PATCH] Make timeout checking more efficient --- tools/cmd/at/tty_io.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/cmd/at/tty_io.go b/tools/cmd/at/tty_io.go index 13374b701..f50b1daed 100644 --- a/tools/cmd/at/tty_io.go +++ b/tools/cmd/at/tty_io.go @@ -17,11 +17,14 @@ func do_chunked_io(io_data *rc_io_data) (serialized_response []byte, err error) } var last_received_data_at time.Time + var check_for_timeout func(loop *tui.Loop, timer_id tui.TimerId) error - check_for_timeout := func(loop *tui.Loop, timer_id tui.TimerId) error { - if time.Now().Sub(last_received_data_at) > io_data.timeout { + check_for_timeout = func(loop *tui.Loop, timer_id tui.TimerId) error { + time_since_last_received_data := time.Now().Sub(last_received_data_at) + if time_since_last_received_data >= io_data.timeout { return os.ErrDeadlineExceeded } + loop.AddTimer(io_data.timeout-time_since_last_received_data, false, check_for_timeout) return nil } @@ -30,7 +33,7 @@ func do_chunked_io(io_data *rc_io_data) (serialized_response []byte, err error) loop.Quit(0) } last_received_data_at = time.Now() - loop.AddTimer(10*time.Millisecond, true, check_for_timeout) + loop.AddTimer(io_data.timeout, false, check_for_timeout) } loop.OnReceivedData = func(loop *tui.Loop, data []byte) error {