func (r *ReadStream) FeedData(buf []byte) {
	r.locker.Lock()
	defer r.locker.Unlock()
	r.buffer = append(r.buffer, buf)
	r.bufferSize = r.bufferSize + len(buf)
	if r.waiting {
		r.waiting = false
		r.waiter.Unlock()
	}
}
FeedData feed buffer from a socket or other.
package hole
import (
	"bytes"
	"io"
	"sync"
)
type ReadStream struct {
	buffer     [][]byte
	bufferSize int
	eof        error
	locker     *sync.RWMutex
	waiter     *sync.RWMutex
	waiting    bool
}
type WriteStream struct {
	sessionID []byte
	conn      Conn
}
func NewReadStream() *ReadStream {
	var rs = new(ReadStream)
	rs.locker = new(sync.RWMutex)
	rs.waiter = new(sync.RWMutex)
	rs.waiting = false
	return rs
}