//no close rc any time
//you can close wc, r, w.
-func RW2Chan(r io.ReadCloser,w io.WriteCloser) (rc,wc chan[]byte) {
+func RW2Chan(r io.ReadCloser, w io.WriteCloser) (rc, wc chan []byte) {
if r != nil {
- rc = make(chan[]byte, 1<<16)
- go func(rc chan[]byte,r io.ReadCloser){
+ rc = make(chan []byte, 10)
+ go func(rc chan []byte, r io.ReadCloser) {
for {
buf := make([]byte, 1<<16)
- n,e := r.Read(buf)
+ n, e := r.Read(buf)
if n != 0 {
rc <- buf[:n]
} else if e != nil {
break
}
}
- }(rc,r)
+ }(rc, r)
}
-
+
if w != nil {
- wc = make(chan[]byte, 1<<16)
- go func(wc chan[]byte,w io.WriteCloser){
+ wc = make(chan []byte, 10)
+ go func(wc chan []byte, w io.WriteCloser) {
for {
- buf :=<- wc
- if len(buf) == 0 {//chan close
+ buf := <-wc
+ if len(buf) == 0 { //chan close
w.Close()
break
}
- _,e := w.Write(buf)
+ _, e := w.Write(buf)
if e != nil {
close(wc)
break
}
}
- }(wc,w)
+ }(wc, w)
}
return
-}
\ No newline at end of file
+}