From 9e9e8b992963aa949340fafc4b2fc6835857a1da Mon Sep 17 00:00:00 2001 From: Will Hawkins Date: Tue, 15 Mar 2022 21:06:52 -0400 Subject: Add a helper for doing concurrent writes to files. --- ccw/ccw.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 ccw/ccw.go (limited to 'ccw') diff --git a/ccw/ccw.go b/ccw/ccw.go new file mode 100644 index 0000000..ea207e5 --- /dev/null +++ b/ccw/ccw.go @@ -0,0 +1,24 @@ +package ccw + +import ( + "os" + "sync" +) + +type ConcurrentWriter struct { + lock sync.Mutex + file *os.File +} + +func NewConcurrentFileWriter(file *os.File) *ConcurrentWriter { + return &ConcurrentWriter{sync.Mutex{}, file} +} + +func (ccw *ConcurrentWriter) Write(p []byte) (n int, err error) { + ccw.lock.Lock() + defer func() { + ccw.file.Sync() + ccw.lock.Unlock() + }() + return ccw.file.Write(p) +} -- cgit v1.2.3