diff options
Diffstat (limited to 'skate/xio')
| -rw-r--r-- | skate/xio/util.go | 19 | 
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  | 
