From ffbdf4fa7cd33757d33742a183ce87660e8a03da Mon Sep 17 00:00:00 2001 From: kevin Date: Tue, 19 Jul 2022 20:54:45 +0800 Subject: [PATCH] chore: refactoring --- conn.go | 29 ----------------------------- delayedwriter.go | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 29 deletions(-) create mode 100644 delayedwriter.go diff --git a/conn.go b/conn.go index 9103b29..3ba1bd2 100644 --- a/conn.go +++ b/conn.go @@ -135,32 +135,3 @@ func startListener() error { go pconn.process() } } - -type delayedWriter struct { - writer io.Writer - delay time.Duration - stopChan <-chan struct{} -} - -func newDelayedWriter(writer io.Writer, delay time.Duration, stopChan <-chan struct{}) delayedWriter { - return delayedWriter{ - writer: writer, - delay: delay, - stopChan: stopChan, - } -} - -func (w delayedWriter) Write(p []byte) (int, error) { - if w.delay == 0 { - return w.writer.Write(p) - } - - timer := time.NewTimer(w.delay) - defer timer.Stop() - select { - case <-timer.C: - return w.writer.Write(p) - case <-w.stopChan: - return 0, errClientCanceled - } -} diff --git a/delayedwriter.go b/delayedwriter.go new file mode 100644 index 0000000..d5399f9 --- /dev/null +++ b/delayedwriter.go @@ -0,0 +1,36 @@ +package main + +import ( + "io" + "time" +) + +type delayedWriter struct { + writer io.Writer + delay time.Duration + stopChan <-chan struct{} +} + +func newDelayedWriter(writer io.Writer, delay time.Duration, stopChan <-chan struct{}) delayedWriter { + return delayedWriter{ + writer: writer, + delay: delay, + stopChan: stopChan, + } +} + +func (w delayedWriter) Write(p []byte) (int, error) { + if w.delay == 0 { + return w.writer.Write(p) + } + + timer := time.NewTimer(w.delay) + defer timer.Stop() + + select { + case <-timer.C: + return w.writer.Write(p) + case <-w.stopChan: + return 0, errClientCanceled + } +}