github.com/m3db/m3@v1.5.0/src/msg/consumer/options.go (about) 1 // Copyright (c) 2018 Uber Technologies, Inc. 2 // 3 // Permission is hereby granted, free of charge, to any person obtaining a copy 4 // of this software and associated documentation files (the "Software"), to deal 5 // in the Software without restriction, including without limitation the rights 6 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 // copies of the Software, and to permit persons to whom the Software is 8 // furnished to do so, subject to the following conditions: 9 // 10 // The above copyright notice and this permission notice shall be included in 11 // all copies or substantial portions of the Software. 12 // 13 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 // THE SOFTWARE. 20 21 package consumer 22 23 import ( 24 "time" 25 26 "github.com/m3db/m3/src/msg/protocol/proto" 27 "github.com/m3db/m3/src/x/instrument" 28 xio "github.com/m3db/m3/src/x/io" 29 "github.com/m3db/m3/src/x/pool" 30 ) 31 32 var ( 33 defaultAckBufferSize = 1048576 34 defaultAckFlushInterval = 200 * time.Millisecond 35 defaultConnectionBufferSize = 1048576 36 defaultWriteTimeout = 5 * time.Second 37 ) 38 39 type options struct { 40 encOptions proto.Options 41 decOptions proto.Options 42 messagePoolOpts MessagePoolOptions 43 ackFlushInterval time.Duration 44 ackBufferSize int 45 writeBufferSize int 46 readBufferSize int 47 writeTimeout time.Duration 48 iOpts instrument.Options 49 rwOpts xio.Options 50 } 51 52 // NewOptions creates a new options. 53 func NewOptions() Options { 54 return &options{ 55 encOptions: proto.NewOptions(), 56 decOptions: proto.NewOptions(), 57 messagePoolOpts: MessagePoolOptions{PoolOptions: pool.NewObjectPoolOptions()}, 58 ackFlushInterval: defaultAckFlushInterval, 59 ackBufferSize: defaultAckBufferSize, 60 writeBufferSize: defaultConnectionBufferSize, 61 readBufferSize: defaultConnectionBufferSize, 62 writeTimeout: defaultWriteTimeout, 63 iOpts: instrument.NewOptions(), 64 rwOpts: xio.NewOptions(), 65 } 66 } 67 68 func (opts *options) EncoderOptions() proto.Options { 69 return opts.encOptions 70 } 71 72 func (opts *options) SetEncoderOptions(value proto.Options) Options { 73 o := *opts 74 o.encOptions = value 75 return &o 76 } 77 78 func (opts *options) DecoderOptions() proto.Options { 79 return opts.decOptions 80 } 81 82 func (opts *options) SetDecoderOptions(value proto.Options) Options { 83 o := *opts 84 o.decOptions = value 85 return &o 86 } 87 88 func (opts *options) MessagePoolOptions() MessagePoolOptions { 89 return opts.messagePoolOpts 90 } 91 92 func (opts *options) SetMessagePoolOptions(value MessagePoolOptions) Options { 93 o := *opts 94 o.messagePoolOpts = value 95 return &o 96 } 97 98 func (opts *options) AckFlushInterval() time.Duration { 99 return opts.ackFlushInterval 100 } 101 102 func (opts *options) SetAckFlushInterval(value time.Duration) Options { 103 o := *opts 104 o.ackFlushInterval = value 105 return &o 106 } 107 108 func (opts *options) AckBufferSize() int { 109 return opts.ackBufferSize 110 } 111 112 func (opts *options) SetAckBufferSize(value int) Options { 113 o := *opts 114 o.ackBufferSize = value 115 return &o 116 } 117 118 func (opts *options) ConnectionWriteBufferSize() int { 119 return opts.writeBufferSize 120 } 121 122 func (opts *options) SetConnectionWriteBufferSize(value int) Options { 123 o := *opts 124 o.writeBufferSize = value 125 return &o 126 } 127 128 func (opts *options) ConnectionReadBufferSize() int { 129 return opts.readBufferSize 130 } 131 132 func (opts *options) SetConnectionReadBufferSize(value int) Options { 133 o := *opts 134 o.readBufferSize = value 135 return &o 136 } 137 138 func (opts *options) ConnectionWriteTimeout() time.Duration { 139 return opts.writeTimeout 140 } 141 142 func (opts *options) SetConnectionWriteTimeout(value time.Duration) Options { 143 o := *opts 144 o.writeTimeout = value 145 return &o 146 } 147 148 func (opts *options) InstrumentOptions() instrument.Options { 149 return opts.iOpts 150 } 151 152 func (opts *options) SetInstrumentOptions(value instrument.Options) Options { 153 o := *opts 154 o.iOpts = value 155 return &o 156 } 157 158 func (opts *options) SetRWOptions(value xio.Options) Options { 159 o := *opts 160 o.rwOpts = value 161 return &o 162 } 163 164 func (opts *options) RWOptions() xio.Options { 165 return opts.rwOpts 166 }