diff --git a/go/master/c/client.go b/go/master/c/client.go index ed3e220d5ff9c98a94f34f37264d337de59d11aa..b186474dc33138aeb02a2ffe34418b379b7a2db0 100644 --- a/go/master/c/client.go +++ b/go/master/c/client.go @@ -55,9 +55,9 @@ func (a addresser) Address() string { } //export paddle_new_master_client -func paddle_new_master_client(addr *C.char) C.paddle_master_client { +func paddle_new_master_client(addr *C.char, bufSize int) C.paddle_master_client { a := C.GoString(addr) - c := master.NewClient(addresser(a)) + c := master.NewClient(addresser(a), bufSize) return add(c) } diff --git a/go/master/client.go b/go/master/client.go index cd1408db3dff33fe7d3d90f5f3c363df0456aaa4..8451820c1963dd5a4eff0c3ab7763eb6a8e05ba4 100644 --- a/go/master/client.go +++ b/go/master/client.go @@ -21,10 +21,13 @@ type Client struct { } // NewClient creates a new Client. -func NewClient(addr Addresser) *Client { +// +// bufSize is the record buffer size. NextRecord will read from this +// buffer. +func NewClient(addr Addresser, bufSize int) *Client { c := &Client{} c.conn = connection.New() - c.ch = make(chan []byte) + c.ch = make(chan []byte, bufSize) go c.monitorMaster(addr) go c.getRecords() return c diff --git a/go/master/client_test.go b/go/master/client_test.go index 02751aeb301dfe000e37f757cf6503f42322db0a..2b3f873ecf3a650cd91d1d9c20b414b05bbb0cd6 100644 --- a/go/master/client_test.go +++ b/go/master/client_test.go @@ -60,7 +60,7 @@ func TestNextRecord(t *testing.T) { w.Close() f.Close() - c := master.NewClient(master.TestAddresser(fmt.Sprintf(":%d", p))) + c := master.NewClient(master.TestAddresser(fmt.Sprintf(":%d", p)), 10) c.SetDataset([]string{path}) for pass := 0; pass < 50; pass++ {