diff options
author | Jens Geyer <jensg@apache.org> | 2014-10-13 21:17:55 +0200 |
---|---|---|
committer | Jens Geyer <jensg@apache.org> | 2014-10-13 21:34:51 +0200 |
commit | 157691fa987c6f672585854839598216c08eec44 (patch) | |
tree | e75f6ba958b249bc61d2417ff8bc892ef97fd322 /lib/go | |
parent | d8dd7ea99fdbf0bbe687f3edca2577c735ec2986 (diff) | |
download | thrift-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.
Diffstat (limited to 'lib/go')
-rw-r--r-- | lib/go/thrift/iostream_transport.go | 45 |
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 } |