@ -28,8 +28,6 @@ type RequestMarshaler struct {
BatchThreshold int
BatchThreshold int
SizeThreshold int
SizeThreshold int
ForceCompression bool
ForceCompression bool
gz * gzip . Writer
}
}
const (
const (
@ -58,15 +56,9 @@ func init() {
// NewRequestMarshaler returns an initialized RequestMarshaler.
// NewRequestMarshaler returns an initialized RequestMarshaler.
func NewRequestMarshaler ( ) * RequestMarshaler {
func NewRequestMarshaler ( ) * RequestMarshaler {
w , err := gzip . NewWriterLevel ( nil , gzip . BestCompression )
if err != nil {
panic ( fmt . Sprintf ( "failed to create GZIP writer: %s" , err . Error ( ) ) )
}
return & RequestMarshaler {
return & RequestMarshaler {
BatchThreshold : defaultBatchThreshold ,
BatchThreshold : defaultBatchThreshold ,
SizeThreshold : defaultSizeThreshold ,
SizeThreshold : defaultSizeThreshold ,
gz : w ,
}
}
}
}
@ -76,6 +68,11 @@ func (m *RequestMarshaler) Marshal(r Requester) ([]byte, bool, error) {
stats . Add ( numRequests , 0 )
stats . Add ( numRequests , 0 )
compress := false
compress := false
gzw , err := gzip . NewWriterLevel ( nil , gzip . BestCompression )
if err != nil {
panic ( fmt . Sprintf ( "failed to create GZIP writer: %s" , err . Error ( ) ) )
}
stmts := r . GetRequest ( ) . GetStatements ( )
stmts := r . GetRequest ( ) . GetStatements ( )
if len ( stmts ) >= m . BatchThreshold {
if len ( stmts ) >= m . BatchThreshold {
compress = true
compress = true
@ -98,11 +95,11 @@ func (m *RequestMarshaler) Marshal(r Requester) ([]byte, bool, error) {
if compress {
if compress {
// Let's try compression.
// Let's try compression.
var buf bytes . Buffer
var buf bytes . Buffer
m. gz. Reset ( & buf )
gzw . Reset ( & buf )
if _ , err := m. gz. Write ( b ) ; err != nil {
if _ , err := gzw . Write ( b ) ; err != nil {
return nil , false , err
return nil , false , err
}
}
if err := m. gz. Close ( ) ; err != nil {
if err := gzw . Close ( ) ; err != nil {
return nil , false , err
return nil , false , err
}
}