summaryrefslogtreecommitdiff
path: root/vendor/github.com/gocarina/gocsv/safe_csv.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/gocarina/gocsv/safe_csv.go')
-rw-r--r--vendor/github.com/gocarina/gocsv/safe_csv.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/vendor/github.com/gocarina/gocsv/safe_csv.go b/vendor/github.com/gocarina/gocsv/safe_csv.go
new file mode 100644
index 0000000..4b2882f
--- /dev/null
+++ b/vendor/github.com/gocarina/gocsv/safe_csv.go
@@ -0,0 +1,32 @@
+package gocsv
+
+//Wraps around SafeCSVWriter and makes it thread safe.
+import (
+ "encoding/csv"
+ "sync"
+)
+
+type SafeCSVWriter struct {
+ *csv.Writer
+ m sync.Mutex
+}
+
+func NewSafeCSVWriter(original *csv.Writer) *SafeCSVWriter {
+ return &SafeCSVWriter{
+ Writer: original,
+ }
+}
+
+//Override write
+func (w *SafeCSVWriter) Write(row []string) error {
+ w.m.Lock()
+ defer w.m.Unlock()
+ return w.Writer.Write(row)
+}
+
+//Override flush
+func (w *SafeCSVWriter) Flush() {
+ w.m.Lock()
+ w.Writer.Flush()
+ w.m.Unlock()
+}