Skip to content

Commit 8baf124

Browse files
authored
Merge pull request #76 from mkhanali/add_buffer_size_option
Add buffer size option to connection
2 parents 75e99cc + cd5b9c8 commit 8baf124

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

conn.go

+8
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,14 @@ func Connect(conn io.ReadWriteCloser, opts ...func(*Conn) error) (*Conn, error)
8383
return nil, err
8484
}
8585

86+
if options.ReadBufferSize > 0 {
87+
reader = frame.NewReaderSize(conn, options.ReadBufferSize)
88+
}
89+
90+
if options.WriteBufferSize > 0 {
91+
writer = frame.NewWriterSize(conn, options.ReadBufferSize)
92+
}
93+
8694
readChannelCapacity := 20
8795
writeChannelCapacity := 20
8896

conn_options.go

+25
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ type connOptions struct {
2222
AcceptVersions []string
2323
Header *frame.Header
2424
ReadChannelCapacity, WriteChannelCapacity int
25+
ReadBufferSize, WriteBufferSize int
2526
}
2627

2728
func newConnOptions(conn *Conn, opts []func(*Conn) error) (*connOptions, error) {
@@ -156,6 +157,16 @@ var ConnOpt struct {
156157
// same time. A high number may affect memory usage while a too low number may lock the
157158
// system up. Default is set to 20.
158159
WriteChannelCapacity func(capacity int) func(*Conn) error
160+
161+
// ReadBufferSize specifies number of bytes that can be used to read the message
162+
// A high number may affect memory usage while a too low number may lock the
163+
// system up. Default is set to 4096.
164+
ReadBufferSize func(size int) func(*Conn) error
165+
166+
// WriteBufferSize specifies number of bytes that can be used to write the message
167+
// A high number may affect memory usage while a too low number may lock the
168+
// system up. Default is set to 4096.
169+
WriteBufferSize func(size int) func(*Conn) error
159170
}
160171

161172
func init() {
@@ -244,4 +255,18 @@ func init() {
244255
return nil
245256
}
246257
}
258+
259+
ConnOpt.ReadBufferSize = func(size int) func(*Conn) error {
260+
return func(c *Conn) error {
261+
c.options.ReadBufferSize = size
262+
return nil
263+
}
264+
}
265+
266+
ConnOpt.WriteBufferSize = func(size int) func(*Conn) error {
267+
return func(c *Conn) error {
268+
c.options.WriteBufferSize = size
269+
return nil
270+
}
271+
}
247272
}

0 commit comments

Comments
 (0)