drain internalMsgQueue and wait for cswal on quit

This commit is contained in:
Ethan Buchman
2016-02-29 18:02:22 -05:00
parent c9ec9cf00e
commit 69d906f7dd
3 changed files with 25 additions and 1 deletions

View File

@@ -37,6 +37,8 @@ var _ = wire.RegisterInterface(
type WAL struct {
fp *os.File
exists bool // if the file already existed (restarted process)
done chan struct{}
}
func NewWAL(file string) (*WAL, error) {
@@ -51,6 +53,7 @@ func NewWAL(file string) (*WAL, error) {
return &WAL{
fp: fp,
exists: walExists,
done: make(chan struct{}),
}, nil
}
@@ -72,6 +75,11 @@ func (wal *WAL) Close() {
if wal != nil {
wal.fp.Close()
}
wal.done <- struct{}{}
}
func (wal *WAL) Wait() {
<-wal.done
}
func (wal *WAL) SeekFromEnd(found func([]byte) bool) (nLines int, err error) {