summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Geyer <jensg@apache.org>2014-10-13 21:17:55 +0200
committerJens Geyer <jensg@apache.org>2014-10-13 21:34:51 +0200
commit157691fa987c6f672585854839598216c08eec44 (patch)
treee75f6ba958b249bc61d2417ff8bc892ef97fd322
parentd8dd7ea99fdbf0bbe687f3edca2577c735ec2986 (diff)
downloadthrift-157691fa987c6f672585854839598216c08eec44.tar.gz
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.
-rw-r--r--lib/go/thrift/iostream_transport.go45
1 files changed, 38 insertions, 7 deletions
diff --git a/lib/go/thrift/iostream_transport.go b/lib/go/thrift/iostream_transport.go
index 17fc969f7..314eaa6ff 100644
--- a/lib/go/thrift/iostream_transport.go
+++ b/lib/go/thrift/iostream_transport.go
@@ -149,26 +149,57 @@ func (p *StreamTransport) Flush() error {
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))
+ }
+ if err != nil {
+ err = NewTTransportExceptionFromError(err)
}
- return p.Writer.Write([]byte(s))
+ return
}