sdk/config.go (70 lines of code) (raw):

/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package sdk import ( "net/http" "time" ) type Config struct { AutoRetry bool MaxRetryTime int UserAgent string Debug bool HttpTransport *http.Transport Transport http.RoundTripper EnableAsync bool MaxTaskQueueSize int GoRoutinePoolSize int Scheme string Timeout time.Duration } func NewConfig() (config *Config) { // with default vaule config = &Config{ AutoRetry: false, MaxRetryTime: 3, Debug: false, EnableAsync: false, MaxTaskQueueSize: 1000, GoRoutinePoolSize: 5, Scheme: "HTTP", } return } func (c *Config) WithAutoRetry(isAutoRetry bool) *Config { c.AutoRetry = isAutoRetry return c } func (c *Config) WithMaxRetryTime(maxRetryTime int) *Config { c.MaxRetryTime = maxRetryTime return c } func (c *Config) WithUserAgent(userAgent string) *Config { c.UserAgent = userAgent return c } func (c *Config) WithDebug(isDebug bool) *Config { c.Debug = isDebug return c } func (c *Config) WithTimeout(timeout time.Duration) *Config { c.Timeout = timeout return c } func (c *Config) WithHttpTransport(httpTransport *http.Transport) *Config { c.HttpTransport = httpTransport return c } func (c *Config) WithEnableAsync(isEnableAsync bool) *Config { c.EnableAsync = isEnableAsync return c } func (c *Config) WithMaxTaskQueueSize(maxTaskQueueSize int) *Config { c.MaxTaskQueueSize = maxTaskQueueSize return c } func (c *Config) WithGoRoutinePoolSize(goRoutinePoolSize int) *Config { c.GoRoutinePoolSize = goRoutinePoolSize return c } func (c *Config) WithScheme(scheme string) *Config { c.Scheme = scheme return c }