71 lines
1.4 KiB
Go
Raw Normal View History

2016-01-18 14:37:42 -08:00
package main
import (
"bufio"
"errors"
"fmt"
"net"
"reflect"
//"encoding/hex"
. "github.com/tendermint/go-common"
"github.com/tendermint/go-wire"
"github.com/tendermint/tmsp/types"
)
func main() {
conn, err := Connect("unix://test.sock")
if err != nil {
Exit(err.Error())
}
// Make a bunch of requests
counter := 0
for i := 0; ; i++ {
req := types.RequestEcho{"foobar"}
_, err := makeRequest(conn, req)
if err != nil {
Exit(err.Error())
}
counter += 1
if counter%1000 == 0 {
fmt.Println(counter)
}
}
}
func makeRequest(conn net.Conn, req types.Request) (types.Response, error) {
var bufWriter = bufio.NewWriter(conn)
var n int
var err error
// Write desired request
wire.WriteBinaryLengthPrefixed(struct{ types.Request }{req}, bufWriter, &n, &err)
if err != nil {
return nil, err
}
bufWriter.Write([]byte{0x01, 0x01, types.RequestTypeFlush}) // Write flush msg
err = bufWriter.Flush()
if err != nil {
return nil, err
}
// Read desired response
var res types.Response
wire.ReadBinaryPtrLengthPrefixed(&res, conn, 0, &n, &err)
if err != nil {
return nil, err
}
var resFlush types.Response // Read flush msg
wire.ReadBinaryPtrLengthPrefixed(&resFlush, conn, 0, &n, &err)
if err != nil {
return nil, err
}
if _, ok := resFlush.(types.ResponseFlush); !ok {
return nil, errors.New(Fmt("Expected flush response but got something else", reflect.TypeOf(resFlush)))
}
return res, nil
}