pkg/remoting/config/config.go (62 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 config import ( "flag" "time" "seata.apache.org/seata-go/pkg/util/flagext" ) var seataConfig *SeataConfig type Config struct { ReconnectInterval int `yaml:"reconnect-interval" json:"reconnect-interval" koanf:"reconnect-interval"` ConnectionNum int `yaml:"connection-num" json:"connection-num" koanf:"connection-num"` LoadBalanceType string `yaml:"load-balance-type" json:"load-balance-type" koanf:"load-balance-type"` SessionConfig SessionConfig `yaml:"session" json:"session" koanf:"session"` } // RegisterFlagsWithPrefix for Config. func (cfg *Config) RegisterFlagsWithPrefix(prefix string, f *flag.FlagSet) { f.IntVar(&cfg.ReconnectInterval, prefix+".reconnect-interval", 0, "Reconnect interval.") f.IntVar(&cfg.ConnectionNum, prefix+".connection-num", 1, "The getty_session pool.") f.StringVar(&cfg.LoadBalanceType, prefix+".load-balance-type", "XID", "default load balance type") cfg.SessionConfig.RegisterFlagsWithPrefix(prefix+".session", f) } type ShutdownConfig struct { Wait time.Duration `yaml:"wait" json:"wait" konaf:"wait"` } func (cfg *ShutdownConfig) RegisterFlagsWithPrefix(prefix string, f *flag.FlagSet) { f.DurationVar(&cfg.Wait, prefix+".wait", 3*time.Second, "Shutdown wait time.") } type TransportConfig struct { ShutdownConfig ShutdownConfig `yaml:"shutdown" json:"shutdown" koanf:"shutdown"` Type string `yaml:"type" json:"type" koanf:"type"` Server string `yaml:"server" json:"server" koanf:"server"` Heartbeat bool `yaml:"heartbeat" json:"heartbeat" koanf:"heartbeat"` Serialization string `yaml:"serialization" json:"serialization" koanf:"serialization"` Compressor string `yaml:"compressor" json:"compressor" koanf:"compressor"` EnableTmClientBatchSendRequest bool `yaml:"enable-tm-client-batch-send-request" json:"enable-tm-client-batch-send-request" koanf:"enable-tm-client-batch-send-request"` EnableRmClientBatchSendRequest bool `yaml:"enable-rm-client-batch-send-request" json:"enable-rm-client-batch-send-request" koanf:"enable-rm-client-batch-send-request"` RPCRmRequestTimeout time.Duration `yaml:"rpc-rm-request-timeout" json:"rpc-rm-request-timeout" koanf:"rpc-rm-request-timeout"` RPCTmRequestTimeout time.Duration `yaml:"rpc-tm-request-timeout" json:"rpc-tm-request-timeout" koanf:"rpc-tm-request-timeout"` } func (cfg *TransportConfig) RegisterFlagsWithPrefix(prefix string, f *flag.FlagSet) { cfg.ShutdownConfig.RegisterFlagsWithPrefix(prefix+".shutdown", f) f.StringVar(&cfg.Type, prefix+".type", "TCP", "Transport protocol type.") f.StringVar(&cfg.Server, prefix+".server", "NIO", "Server type.") f.BoolVar(&cfg.Heartbeat, prefix+".heartbeat", true, "Heartbeat.") f.StringVar(&cfg.Serialization, prefix+".serialization", "seata", "Encoding and decoding mode.") f.StringVar(&cfg.Compressor, prefix+".compressor", "none", "Message compression mode.") f.BoolVar(&cfg.EnableTmClientBatchSendRequest, prefix+".enable-tm-client-batch-send-request", false, "Allow batch sending of requests (TM).") f.BoolVar(&cfg.EnableRmClientBatchSendRequest, prefix+".enable-rm-client-batch-send-request", true, "Allow batch sending of requests (RM).") f.DurationVar(&cfg.RPCRmRequestTimeout, prefix+".rpc-rm-request-timeout", 30*time.Second, "RM send request timeout.") f.DurationVar(&cfg.RPCTmRequestTimeout, prefix+".rpc-tm-request-timeout", 30*time.Second, "TM send request timeout.") } // todo refactor config type SeataConfig struct { ApplicationID string TxServiceGroup string ServiceVgroupMapping flagext.StringMap ServiceGrouplist flagext.StringMap LoadBalanceType string } func InitConfig(seataConf *SeataConfig) { seataConfig = seataConf } func GetSeataConfig() *SeataConfig { return seataConfig }