diff options
| author | Shulhan <ms@kilabit.info> | 2022-08-03 20:21:45 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2022-08-03 20:21:45 +0700 |
| commit | 7dd9858b2263a53179919da61e11c26d96fbfea7 (patch) | |
| tree | 4631e1476372edad993c42cfc6c073e5b67b5a36 | |
| parent | 9c1bcb8938c0b59e0395a7c26c5117e3a5dc0fc5 (diff) | |
| download | pakakeh.go-7dd9858b2263a53179919da61e11c26d96fbfea7.tar.xz | |
lib/mlog: simplify for-select channel consumers with for-range
| -rw-r--r-- | lib/mlog/multi_logger.go | 80 |
1 files changed, 33 insertions, 47 deletions
diff --git a/lib/mlog/multi_logger.go b/lib/mlog/multi_logger.go index 33c0865c..bf420a05 100644 --- a/lib/mlog/multi_logger.go +++ b/lib/mlog/multi_logger.go @@ -236,35 +236,28 @@ func (mlog *MultiLogger) processErrorQueue() { b []byte w NamedWriter err error - ok bool ) - for { - select { - case b, ok = <-mlog.qerr: - if !ok { - // A closed channel is already empty, no need - // to flush it. - for name = range mlog.errs { - delete(mlog.errs, name) - } - mlog.flushq <- struct{}{} - return - } - if bytes.Equal(b, cmdFlush) { - // Empty data indicated flushing the channel. - flush(mlog.qerr, mlog.errs) - mlog.flushq <- struct{}{} - continue - } + for b = range mlog.qerr { + if bytes.Equal(b, cmdFlush) { + // Empty data indicated flushing the channel. + flush(mlog.qerr, mlog.errs) + mlog.flushq <- struct{}{} + continue + } - for name, w = range mlog.errs { - _, err = w.Write(b) - if err != nil { - log.Printf("MultiLogger: %s: %s", name, err) - } + for name, w = range mlog.errs { + _, err = w.Write(b) + if err != nil { + log.Printf("MultiLogger: %s: %s", name, err) } } } + + for name = range mlog.errs { + // A closed channel is already empty, no need to flush it. + delete(mlog.errs, name) + } + mlog.flushq <- struct{}{} } func (mlog *MultiLogger) processOutputQueue() { @@ -273,35 +266,28 @@ func (mlog *MultiLogger) processOutputQueue() { b []byte w NamedWriter err error - ok bool ) - for { - select { - case b, ok = <-mlog.qout: - if !ok { - // A closed channel is already empty, no need - // to flush it. - for name = range mlog.outs { - delete(mlog.outs, name) - } - mlog.flushq <- struct{}{} - return - } - if bytes.Equal(b, cmdFlush) { - flush(mlog.qout, mlog.outs) - mlog.flushq <- struct{}{} - continue - } + for b = range mlog.qout { + if bytes.Equal(b, cmdFlush) { + flush(mlog.qout, mlog.outs) + mlog.flushq <- struct{}{} + continue + } - for name, w = range mlog.outs { - _, err = w.Write(b) - if err != nil { - log.Printf("MultiLogger: %s: %s", name, err) - } + for name, w = range mlog.outs { + _, err = w.Write(b) + if err != nil { + log.Printf("MultiLogger: %s: %s", name, err) } } } + + for name = range mlog.outs { + // A closed channel is already empty, no need to flush it. + delete(mlog.outs, name) + } + mlog.flushq <- struct{}{} } func (mlog *MultiLogger) writeTo(q chan []byte, format string, v ...interface{}) { |
