mirror of
https://github.com/kevwan/tproxy.git
synced 2026-05-23 07:40:35 +00:00
chore: refactoring
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user