generate: Don't create a new decoder for a possibly nil reader
This commit is contained in:
parent
3136dcbfdf
commit
0ac34b2f22
@ -1212,10 +1212,10 @@ func (this *Generator) generateReceive() (n int, err error) {
|
|||||||
this.push()
|
this.push()
|
||||||
nn, err = this.iprintf("method, reader, err := trans.ReceiveReader()\n")
|
nn, err = this.iprintf("method, reader, err := trans.ReceiveReader()\n")
|
||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
nn, err = this.iprintf("decoder := tape.NewDecoder(reader)\n")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.iprintf("if err != nil { return nil, n, err }\n")
|
nn, err = this.iprintf("if err != nil { return nil, n, err }\n")
|
||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
|
nn, err = this.iprintf("decoder := tape.NewDecoder(reader)\n")
|
||||||
|
n += nn; if err != nil { return n, err }
|
||||||
nn, err = this.iprintf("switch method {\n")
|
nn, err = this.iprintf("switch method {\n")
|
||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
for method, message := range this.protocol.Messages {
|
for method, message := range this.protocol.Messages {
|
||||||
|
|||||||
@ -547,7 +547,7 @@ func TestGenerateRunConn(test *testing.T) {
|
|||||||
group.Add(2)
|
group.Add(2)
|
||||||
|
|
||||||
// server
|
// server
|
||||||
listener, err := hopp.Listen("tcp", "localhost:9999", nil)
|
listener, err := hopp.Listen("tcp", "localhost:43957", nil)
|
||||||
if err != nil { log.Fatalln("SERVER listen:", err) }
|
if err != nil { log.Fatalln("SERVER listen:", err) }
|
||||||
go func() {
|
go func() {
|
||||||
defer listener.Close()
|
defer listener.Close()
|
||||||
@ -557,6 +557,7 @@ func TestGenerateRunConn(test *testing.T) {
|
|||||||
if err != nil { log.Fatalln("SERVER accept:", err) }
|
if err != nil { log.Fatalln("SERVER accept:", err) }
|
||||||
trans, err := conn.AcceptTrans()
|
trans, err := conn.AcceptTrans()
|
||||||
if err != nil { log.Fatalln("SERVER accept trans:", err) }
|
if err != nil { log.Fatalln("SERVER accept trans:", err) }
|
||||||
|
|
||||||
message, n, err := Receive(trans)
|
message, n, err := Receive(trans)
|
||||||
if err != nil { log.Fatalln("SERVER receive:", err) }
|
if err != nil { log.Fatalln("SERVER receive:", err) }
|
||||||
log.Println("SERVER got message", message)
|
log.Println("SERVER got message", message)
|
||||||
@ -565,6 +566,15 @@ func TestGenerateRunConn(test *testing.T) {
|
|||||||
if !ok { log.Fatalln("SERVER expected MessagePong") }
|
if !ok { log.Fatalln("SERVER expected MessagePong") }
|
||||||
if casted != 77 { log.Fatalln("SERVER wrong message value") }
|
if casted != 77 { log.Fatalln("SERVER wrong message value") }
|
||||||
if n != 5 { log.Fatalln("SERVER wrong n value") }
|
if n != 5 { log.Fatalln("SERVER wrong n value") }
|
||||||
|
|
||||||
|
message, n, err = Receive(trans)
|
||||||
|
if err != nil { log.Fatalln("SERVER receive:", err) }
|
||||||
|
log.Println("SERVER got message", message)
|
||||||
|
log.Println("SERVER got n", n)
|
||||||
|
casted, ok = message.(MessagePing)
|
||||||
|
if !ok { log.Fatalln("SERVER expected MessagePong") }
|
||||||
|
if casted != 78 { log.Fatalln("SERVER wrong message value") }
|
||||||
|
if n != 5 { log.Fatalln("SERVER wrong n value") }
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// client
|
// client
|
||||||
@ -574,7 +584,7 @@ func TestGenerateRunConn(test *testing.T) {
|
|||||||
log.Println("CLIENT dialing")
|
log.Println("CLIENT dialing")
|
||||||
conn, err := hopp.Dial(
|
conn, err := hopp.Dial(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
"tcp", "localhost:9999",
|
"tcp", "localhost:43957",
|
||||||
nil)
|
nil)
|
||||||
if err != nil { log.Fatalln("CLIENT dial:", err) }
|
if err != nil { log.Fatalln("CLIENT dial:", err) }
|
||||||
defer conn.Close()
|
defer conn.Close()
|
||||||
@ -583,12 +593,20 @@ func TestGenerateRunConn(test *testing.T) {
|
|||||||
log.Println("CLIENT opening trans")
|
log.Println("CLIENT opening trans")
|
||||||
trans, err := conn.OpenTrans()
|
trans, err := conn.OpenTrans()
|
||||||
if err != nil { log.Fatalln("CLIENT open trans:", err) }
|
if err != nil { log.Fatalln("CLIENT open trans:", err) }
|
||||||
|
|
||||||
message := MessagePing(77)
|
message := MessagePing(77)
|
||||||
log.Println("CLIENT sending message")
|
log.Println("CLIENT sending message")
|
||||||
n, err := Send(trans, &message)
|
n, err := Send(trans, &message)
|
||||||
if err != nil { log.Fatalln("CLIENT send:", err) }
|
if err != nil { log.Fatalln("CLIENT send:", err) }
|
||||||
log.Println("CLIENT sent n", n)
|
log.Println("CLIENT sent n", n)
|
||||||
if n != 5 { log.Fatalln("CLIENT wrong n value") }
|
if n != 5 { log.Fatalln("CLIENT wrong n value") }
|
||||||
|
|
||||||
|
message = MessagePing(78)
|
||||||
|
log.Println("CLIENT sending message")
|
||||||
|
n, err = Send(trans, &message)
|
||||||
|
if err != nil { log.Fatalln("CLIENT send:", err) }
|
||||||
|
log.Println("CLIENT sent n", n)
|
||||||
|
if n != 5 { log.Fatalln("CLIENT wrong n value") }
|
||||||
}()
|
}()
|
||||||
|
|
||||||
group.Wait()
|
group.Wait()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user