Use go-wire's new Read/Write LengthPrefixed methods

This commit is contained in:
Jae Kwon 2015-12-20 09:23:30 -08:00
parent f288e58c81
commit e57f3596a1

View File

@ -2,7 +2,6 @@ package proxy
import ( import (
"bufio" "bufio"
"bytes"
"container/list" "container/list"
"errors" "errors"
"fmt" "fmt"
@ -84,7 +83,7 @@ func (app *remoteAppContext) Error() error {
func (app *remoteAppContext) sendRequestsRoutine() { func (app *remoteAppContext) sendRequestsRoutine() {
for { for {
var n, n2 int var n int
var err error var err error
select { select {
case <-app.QuitService.Quit: case <-app.QuitService.Quit:
@ -93,10 +92,7 @@ func (app *remoteAppContext) sendRequestsRoutine() {
app.willSendReq(reqres) app.willSendReq(reqres)
buf := new(bytes.Buffer) wire.WriteBinaryLengthPrefixed(reqres.Request, app.bufWriter, &n, &err) // Length prefix
wire.WriteBinary(reqres.Request, buf, &n2, &err) // Length prefix
wire.WriteVarint(buf.Len(), app.bufWriter, &n, &err)
wire.WriteTo(buf.Bytes(), app.bufWriter, &n, &err)
if err != nil { if err != nil {
app.StopForError(err) app.StopForError(err)
return return
@ -117,17 +113,13 @@ func (app *remoteAppContext) recvResponseRoutine() {
r := bufio.NewReader(app.conn) // Buffer reads r := bufio.NewReader(app.conn) // Buffer reads
for { for {
var res tmsp.Response var res tmsp.Response
var n, n2 int var n int
var err error var err error
size := wire.ReadVarint(r, &n2, &err) wire.ReadBinaryPtrLengthPrefixed(&res, r, maxResponseSize, &n, &err)
wire.ReadBinaryPtr(&res, r, maxResponseSize, &n, &err)
if err != nil { if err != nil {
app.StopForError(err) app.StopForError(err)
return return
} }
if size != n {
app.StopForError(fmt.Errorf("Prefixed length not equal to actual length. %v vs %v", size, n))
}
switch res := res.(type) { switch res := res.(type) {
case tmsp.ResponseException: case tmsp.ResponseException:
app.StopForError(errors.New(res.Error)) app.StopForError(errors.New(res.Error))