THRIFT-2785 Wrap errors in iostream_transport.go
Client: Go
Patch: GitHub user cvlchinet <cvl@chinet.info>

This closes #246

Wrap errors in iostream_transport.go using NewTTransportExceptionFromError

When I used the StreamTransport to do unit tests I noticed that the EOF TTransportException is not correctly thrown. I quickly found out that the errors in iostream_transport.go where not wrapped with NewTTransportExceptionFromError.
diff --git a/lib/go/thrift/iostream_transport.go b/lib/go/thrift/iostream_transport.go
index 17fc969..314eaa6 100644
--- a/lib/go/thrift/iostream_transport.go
+++ b/lib/go/thrift/iostream_transport.go
@@ -149,26 +149,57 @@
 	return nil
 }
 
+func (p *StreamTransport) Read(c []byte) (n int, err error) {
+	n, err = p.Reader.Read(c)
+	if err != nil {
+		err = NewTTransportExceptionFromError(err)
+	}
+	return
+}
+
 func (p *StreamTransport) ReadByte() (c byte, err error) {
 	f, ok := p.Reader.(io.ByteReader)
 	if ok {
-		return f.ReadByte()
+		c, err = f.ReadByte()
+	} else {
+		c, err = readByte(p.Reader)
 	}
-	return readByte(p.Reader)
+	if err != nil {
+		err = NewTTransportExceptionFromError(err)
+	}
+	return
 }
 
-func (p *StreamTransport) WriteByte(c byte) error {
+func (p *StreamTransport) Write(c []byte) (n int, err error) {
+	n, err = p.Writer.Write(c)
+	if err != nil {
+		err = NewTTransportExceptionFromError(err)
+	}
+	return
+}
+
+func (p *StreamTransport) WriteByte(c byte) (err error) {
 	f, ok := p.Writer.(io.ByteWriter)
 	if ok {
-		return f.WriteByte(c)
+		err = f.WriteByte(c)
+	} else {
+		err = writeByte(p.Writer, c)
 	}
-	return writeByte(p.Writer, c)
+	if err != nil {
+		err = NewTTransportExceptionFromError(err)
+	}
+	return
 }
 
 func (p *StreamTransport) WriteString(s string) (n int, err error) {
 	f, ok := p.Writer.(stringWriter)
 	if ok {
-		return f.WriteString(s)
+		n, err = f.WriteString(s)
+	} else {
+		n, err = p.Writer.Write([]byte(s))
 	}
-	return p.Writer.Write([]byte(s))
+	if err != nil {
+		err = NewTTransportExceptionFromError(err)
+	}
+	return
 }