aboutsummaryrefslogtreecommitdiffstats
path: root/skate/xio
diff options
context:
space:
mode:
Diffstat (limited to 'skate/xio')
-rw-r--r--skate/xio/util.go19
1 files changed, 19 insertions, 0 deletions
diff --git a/skate/xio/util.go b/skate/xio/util.go
index 49f38a3..9f6cc26 100644
--- a/skate/xio/util.go
+++ b/skate/xio/util.go
@@ -9,6 +9,25 @@ import (
"sync"
)
+type Encoder interface {
+ Encode(interface{}) error
+}
+
+type SafeEncoder struct {
+ sync.Mutex
+ enc Encoder
+}
+
+func NewSafeEncoder(enc Encoder) *SafeEncoder {
+ return &SafeEncoder{enc: enc}
+}
+
+func (s *SafeEncoder) Encode(v interface{}) error {
+ s.Lock()
+ defer s.Unlock()
+ return s.enc.Encode(v)
+}
+
// SingleWriter makes any writer thread safe.
type SingleWriter struct {
sync.Mutex