Commit 03a459a2 authored by Janos Guljas's avatar Janos Guljas

rename mock Buffer to Recorder

parent a78522cb
...@@ -10,14 +10,14 @@ import ( ...@@ -10,14 +10,14 @@ import (
) )
type Streamer struct { type Streamer struct {
In, Out *Buffer In, Out *Recorder
handler func(p2p.Peer) handler func(p2p.Peer)
} }
func NewStreamer(handler func(p2p.Peer)) *Streamer { func NewStreamer(handler func(p2p.Peer)) *Streamer {
return &Streamer{ return &Streamer{
In: NewBuffer(), In: NewRecorder(),
Out: NewBuffer(), Out: NewRecorder(),
handler: handler, handler: handler,
} }
} }
...@@ -59,58 +59,58 @@ func (s *Stream) Close() error { ...@@ -59,58 +59,58 @@ func (s *Stream) Close() error {
return nil return nil
} }
type Buffer struct { type Recorder struct {
b []byte b []byte
c int c int
closed bool closed bool
cond *sync.Cond cond *sync.Cond
} }
func NewBuffer() *Buffer { func NewRecorder() *Recorder {
return &Buffer{ return &Recorder{
cond: sync.NewCond(new(sync.Mutex)), cond: sync.NewCond(new(sync.Mutex)),
} }
} }
func (b *Buffer) Read(p []byte) (n int, err error) { func (r *Recorder) Read(p []byte) (n int, err error) {
b.cond.L.Lock() r.cond.L.Lock()
defer b.cond.L.Unlock() defer r.cond.L.Unlock()
for b.c == len(b.b) || b.closed { for r.c == len(r.b) || r.closed {
b.cond.Wait() r.cond.Wait()
} }
end := b.c + len(p) end := r.c + len(p)
if end > len(b.b) { if end > len(r.b) {
end = len(b.b) end = len(r.b)
} }
n = copy(p, b.b[b.c:end]) n = copy(p, r.b[r.c:end])
b.c += n r.c += n
if b.closed { if r.closed {
err = io.EOF err = io.EOF
} }
return n, err return n, err
} }
func (b *Buffer) Write(p []byte) (int, error) { func (r *Recorder) Write(p []byte) (int, error) {
b.cond.L.Lock() r.cond.L.Lock()
defer b.cond.L.Unlock() defer r.cond.L.Unlock()
defer b.cond.Signal() defer r.cond.Signal()
b.b = append(b.b, p...) r.b = append(r.b, p...)
return len(p), nil return len(p), nil
} }
func (b *Buffer) Close() error { func (r *Recorder) Close() error {
b.cond.L.Lock() r.cond.L.Lock()
defer b.cond.L.Unlock() defer r.cond.L.Unlock()
defer b.cond.Broadcast() defer r.cond.Broadcast()
b.closed = true r.closed = true
return nil return nil
} }
func (b *Buffer) Bytes() []byte { func (r *Recorder) Bytes() []byte {
return b.b return r.b
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment