This is an automated email from the ASF dual-hosted git repository.

laurence pushed a commit to branch config-enhance
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git


The following commit(s) were added to refs/heads/config-enhance by this push:
     new 7206057  feat(config): add new protocol config (#1425)
7206057 is described below

commit 720605763126235f16cbb3884ff01cb648b0328d
Author: Mulavar <[email protected]>
AuthorDate: Thu Sep 2 22:41:35 2021 +0800

    feat(config): add new protocol config (#1425)
    
    * feat(config): add new protocol config
    
    * feat(config): replace '_' with '-'
    
    Co-authored-by: dongjianhui03 <[email protected]>
---
 config/protocol_config.go      |  7 +++--
 config/provider_config.go      |  5 ++-
 remoting/getty/config.go       | 70 +++++++++++++++++++++---------------------
 remoting/getty/getty_client.go | 43 ++++++++++++++------------
 remoting/getty/getty_server.go | 24 ++++++++++-----
 remoting/getty/pool.go         |  4 +--
 6 files changed, 82 insertions(+), 71 deletions(-)

diff --git a/config/protocol_config.go b/config/protocol_config.go
index 11eeb7b..ab24145 100644
--- a/config/protocol_config.go
+++ b/config/protocol_config.go
@@ -27,9 +27,10 @@ import (
 
 // ProtocolConfig is protocol configuration
 type ProtocolConfig struct {
-       Name string `default:"dubbo" validate:"required" yaml:"name" 
json:"name,omitempty" property:"name"`
-       Ip   string `yaml:"ip"  json:"ip,omitempty" property:"ip"`
-       Port string `default:"2000" yaml:"port" json:"port,omitempty" 
property:"port"`
+       Name   string      `default:"dubbo" validate:"required" yaml:"name" 
json:"name,omitempty" property:"name"`
+       Ip     string      `yaml:"ip"  json:"ip,omitempty" property:"ip"`
+       Port   string      `default:"2000" yaml:"port" json:"port,omitempty" 
property:"port"`
+       Params interface{} `yaml:"params" json:"params,omitempty" 
property:"params"`
 }
 
 func initProtocolsConfig(rc *RootConfig) error {
diff --git a/config/provider_config.go b/config/provider_config.go
index 4a7adef..eaed3a2 100644
--- a/config/provider_config.go
+++ b/config/provider_config.go
@@ -43,9 +43,8 @@ type ProviderConfig struct {
        Services map[string]*ServiceConfig `yaml:"services" 
json:"services,omitempty" property:"services"`
 
        ProxyFactory string `default:"default" yaml:"proxy" 
json:"proxy,omitempty" property:"proxy"`
-       // Protocols      map[string]*ProtocolConfig `yaml:"protocols" 
json:"protocols,omitempty" property:"protocols"`
-       ProtocolConf interface{} `yaml:"protocol_conf" 
json:"protocol_conf,omitempty" property:"protocol_conf"`
-       FilterConf   interface{} `yaml:"filter_conf" 
json:"filter_conf,omitempty" property:"filter_conf"`
+
+       FilterConf interface{} `yaml:"filter_conf" json:"filter_conf,omitempty" 
property:"filter_conf"`
        // ShutdownConfig *ShutdownConfig            `yaml:"shutdown_conf" 
json:"shutdown_conf,omitempty" property:"shutdown_conf"`
        ConfigType map[string]string `yaml:"config_type" 
json:"config_type,omitempty" property:"config_type"`
 }
diff --git a/remoting/getty/config.go b/remoting/getty/config.go
index 9971d5c..5cf36bf 100644
--- a/remoting/getty/config.go
+++ b/remoting/getty/config.go
@@ -36,21 +36,21 @@ const (
 type (
        // GettySessionParam is session configuration for getty
        GettySessionParam struct {
-               CompressEncoding bool   `default:"false" 
yaml:"compress_encoding" json:"compress_encoding,omitempty"`
-               TcpNoDelay       bool   `default:"true" yaml:"tcp_no_delay" 
json:"tcp_no_delay,omitempty"`
-               TcpKeepAlive     bool   `default:"true" yaml:"tcp_keep_alive" 
json:"tcp_keep_alive,omitempty"`
-               KeepAlivePeriod  string `default:"180s" 
yaml:"keep_alive_period" json:"keep_alive_period,omitempty"`
+               CompressEncoding bool   `default:"false" 
yaml:"compress-encoding" json:"compress-encoding,omitempty"`
+               TcpNoDelay       bool   `default:"true" yaml:"tcp-no-delay" 
json:"tcp-no-delay,omitempty"`
+               TcpKeepAlive     bool   `default:"true" yaml:"tcp-keep-alive" 
json:"tcp-keep-alive,omitempty"`
+               KeepAlivePeriod  string `default:"180s" 
yaml:"keep-alive-period" json:"keep-alive-period,omitempty"`
                keepAlivePeriod  time.Duration
-               TcpRBufSize      int    `default:"262144" yaml:"tcp_r_buf_size" 
json:"tcp_r_buf_size,omitempty"`
-               TcpWBufSize      int    `default:"65536" yaml:"tcp_w_buf_size" 
json:"tcp_w_buf_size,omitempty"`
-               TcpReadTimeout   string `default:"1s" yaml:"tcp_read_timeout" 
json:"tcp_read_timeout,omitempty"`
+               TcpRBufSize      int    `default:"262144" yaml:"tcp-r-buf-size" 
json:"tcp-r-buf-size,omitempty"`
+               TcpWBufSize      int    `default:"65536" yaml:"tcp-w-buf-size" 
json:"tcp-w-buf-size,omitempty"`
+               TcpReadTimeout   string `default:"1s" yaml:"tcp-read-timeout" 
json:"tcp-read-timeout,omitempty"`
                tcpReadTimeout   time.Duration
-               TcpWriteTimeout  string `default:"5s" yaml:"tcp_write_timeout" 
json:"tcp_write_timeout,omitempty"`
+               TcpWriteTimeout  string `default:"5s" yaml:"tcp-write-timeout" 
json:"tcp-write-timeout,omitempty"`
                tcpWriteTimeout  time.Duration
-               WaitTimeout      string `default:"7s" yaml:"wait_timeout" 
json:"wait_timeout,omitempty"`
+               WaitTimeout      string `default:"7s" yaml:"wait-timeout" 
json:"wait-timeout,omitempty"`
                waitTimeout      time.Duration
-               MaxMsgLen        int    `default:"1024" yaml:"max_msg_len" 
json:"max_msg_len,omitempty"`
-               SessionName      string `default:"rpc" yaml:"session_name" 
json:"session_name,omitempty"`
+               MaxMsgLen        int    `default:"1024" yaml:"max-msg-len" 
json:"max-msg-len,omitempty"`
+               SessionName      string `default:"rpc" yaml:"session-name" 
json:"session-name,omitempty"`
        }
 
        // ServerConfig holds supported types by the multiconfig package
@@ -58,53 +58,53 @@ type (
                SSLEnabled bool
 
                // heartbeat
-               HeartbeatPeriod string `default:"60s" yaml:"heartbeat_period" 
json:"heartbeat_period,omitempty"`
+               HeartbeatPeriod string `default:"60s" yaml:"heartbeat-period" 
json:"heartbeat-period,omitempty"`
                heartbeatPeriod time.Duration
 
                // heartbeat timeout
-               HeartbeatTimeout string `default:"5s" yaml:"heartbeat_timeout" 
json:"heartbeat_timeout,omitempty"`
+               HeartbeatTimeout string `default:"5s" yaml:"heartbeat-timeout" 
json:"heartbeat-timeout,omitempty"`
                heartbeatTimeout time.Duration
 
                // session
-               SessionTimeout string `default:"60s" yaml:"session_timeout" 
json:"session_timeout,omitempty"`
+               SessionTimeout string `default:"60s" yaml:"session-timeout" 
json:"session-timeout,omitempty"`
                sessionTimeout time.Duration
-               SessionNumber  int `default:"1000" yaml:"session_number" 
json:"session_number,omitempty"`
+               SessionNumber  int `default:"1000" yaml:"session-number" 
json:"session-number,omitempty"`
 
-               // grpool
-               GrPoolSize  int `default:"0" yaml:"gr_pool_size" 
json:"gr_pool_size,omitempty"`
-               QueueLen    int `default:"0" yaml:"queue_len" 
json:"queue_len,omitempty"`
-               QueueNumber int `default:"0" yaml:"queue_number" 
json:"queue_number,omitempty"`
+               // gr pool
+               GrPoolSize  int `default:"0" yaml:"gr-pool-size" 
json:"gr-pool-size,omitempty"`
+               QueueLen    int `default:"0" yaml:"queue-len" 
json:"queue-len,omitempty"`
+               QueueNumber int `default:"0" yaml:"queue-number" 
json:"queue-number,omitempty"`
 
                // session tcp parameters
-               GettySessionParam GettySessionParam `required:"true" 
yaml:"getty_session_param" json:"getty_session_param,omitempty"`
+               GettySessionParam GettySessionParam `required:"true" 
yaml:",inline" json:",inline"`
        }
 
-       // ClientConfig holds supported types by the multiconfig package
+       // ClientConfig holds supported types by the multi config package
        ClientConfig struct {
-               ReconnectInterval int `default:"0" yaml:"reconnect_interval" 
json:"reconnect_interval,omitempty"`
+               ReconnectInterval int `default:"0" yaml:"reconnect-interval" 
json:"reconnect-interval,omitempty"`
 
                // session pool
-               ConnectionNum int `default:"16" yaml:"connection_number" 
json:"connection_number,omitempty"`
+               ConnectionNum int `default:"16" yaml:"connection-number" 
json:"connection-number,omitempty"`
 
                // heartbeat
-               HeartbeatPeriod string `default:"60s" yaml:"heartbeat_period" 
json:"heartbeat_period,omitempty"`
+               HeartbeatPeriod string `default:"60s" yaml:"heartbeat-period" 
json:"heartbeat-period,omitempty"`
                heartbeatPeriod time.Duration
 
                // heartbeat timeout
-               HeartbeatTimeout string `default:"5s" yaml:"heartbeat_timeout" 
json:"heartbeat_timeout,omitempty"`
+               HeartbeatTimeout string `default:"5s" yaml:"heartbeat-timeout" 
json:"heartbeat-timeout,omitempty"`
                heartbeatTimeout time.Duration
 
                // session
-               SessionTimeout string `default:"60s" yaml:"session_timeout" 
json:"session_timeout,omitempty"`
+               SessionTimeout string `default:"60s" yaml:"session-timeout" 
json:"session-timeout,omitempty"`
                sessionTimeout time.Duration
 
-               // grpool
-               GrPoolSize  int `default:"0" yaml:"gr_pool_size" 
json:"gr_pool_size,omitempty"`
-               QueueLen    int `default:"0" yaml:"queue_len" 
json:"queue_len,omitempty"`
-               QueueNumber int `default:"0" yaml:"queue_number" 
json:"queue_number,omitempty"`
+               // gr pool
+               GrPoolSize  int `default:"0" yaml:"gr-pool-size" 
json:"gr-pool-size,omitempty"`
+               QueueLen    int `default:"0" yaml:"queue-len" 
json:"queue-len,omitempty"`
+               QueueNumber int `default:"0" yaml:"queue-number" 
json:"queue-number,omitempty"`
 
                // session tcp parameters
-               GettySessionParam GettySessionParam `required:"true" 
yaml:"getty_session_param" json:"getty_session_param,omitempty"`
+               GettySessionParam GettySessionParam `required:"true" 
yaml:",inline" json:",inline"`
        }
 )
 
@@ -158,7 +158,7 @@ func GetDefaultServerConfig() ServerConfig {
        }
 }
 
-// CheckValidity confirm getty sessian params
+// CheckValidity confirm getty session params
 func (c *GettySessionParam) CheckValidity() error {
        var err error
 
@@ -203,7 +203,7 @@ func (c *ClientConfig) CheckValidity() error {
        }
 
        if c.heartbeatPeriod >= time.Duration(config.MaxWheelTimeSpan) {
-               return perrors.WithMessagef(err, "heartbeat_period %s should be 
less than %s",
+               return perrors.WithMessagef(err, "heartbeat-period %s should be 
less than %s",
                        c.HeartbeatPeriod, 
time.Duration(config.MaxWheelTimeSpan))
        }
 
@@ -231,7 +231,7 @@ func (c *ServerConfig) CheckValidity() error {
        }
 
        if c.heartbeatPeriod >= time.Duration(config.MaxWheelTimeSpan) {
-               return perrors.WithMessagef(err, "heartbeat_period %s should be 
less than %s",
+               return perrors.WithMessagef(err, "heartbeat-period %s should be 
less than %s",
                        c.HeartbeatPeriod, 
time.Duration(config.MaxWheelTimeSpan))
        }
 
@@ -246,7 +246,7 @@ func (c *ServerConfig) CheckValidity() error {
        }
 
        if c.sessionTimeout >= time.Duration(config.MaxWheelTimeSpan) {
-               return perrors.WithMessagef(err, "session_timeout %s should be 
less than %s",
+               return perrors.WithMessagef(err, "session-timeout %s should be 
less than %s",
                        c.SessionTimeout, 
time.Duration(config.MaxWheelTimeSpan))
        }
 
diff --git a/remoting/getty/getty_client.go b/remoting/getty/getty_client.go
index bd2143e..226e33e 100644
--- a/remoting/getty/getty_client.go
+++ b/remoting/getty/getty_client.go
@@ -50,7 +50,7 @@ var (
        errClientReadTimeout = perrors.New("maybe the client read timeout or 
fail to decode tcp stream in Writer.Write")
 
        clientConf   *ClientConfig
-       clientGrpool gxsync.GenericTaskPool
+       clientGrPool gxsync.GenericTaskPool
 )
 
 // it is init client for single protocol.
@@ -59,27 +59,30 @@ func initClient(protocol string) {
                return
        }
 
-       // load clientconfig from consumer_config
+       // load client config from rootConfig.Protocols
        // default use dubbo
        if config.GetApplicationConfig() == nil {
                return
        }
-       protocolConf := config.GetRootConfig().Network
+       if config.GetRootConfig().Protocols == nil {
+               return
+       }
+
+       protocolConf := config.GetRootConfig().Protocols[protocol]
        defaultClientConfig := GetDefaultClientConfig()
        if protocolConf == nil {
-               logger.Info("protocol_conf default use dubbo config")
+               logger.Info("use default getty client config")
        } else {
-               //dubboConf := 
protocolConf.(map[interface{}]interface{})[protocol]
-               dubboConf := protocolConf[protocol]
-               if dubboConf == nil {
-                       logger.Warnf("dubboConf is nil")
+               gettyClientConfig := protocolConf.Params
+               if gettyClientConfig == nil {
+                       logger.Warnf("gettyClientConfig is nil")
                        return
                }
-               dubboConfByte, err := yaml.Marshal(dubboConf)
+               gettyClientConfigBytes, err := yaml.Marshal(gettyClientConfig)
                if err != nil {
                        panic(err)
                }
-               err = yaml.Unmarshal(dubboConfByte, &defaultClientConfig)
+               err = yaml.Unmarshal(gettyClientConfigBytes, 
&defaultClientConfig)
                if err != nil {
                        panic(err)
                }
@@ -89,12 +92,12 @@ func initClient(protocol string) {
                logger.Warnf("[CheckValidity] error: %v", err)
                return
        }
-       setClientGrpool()
+       setClientGrPool()
 
        rand.Seed(time.Now().UnixNano())
 }
 
-// ShutdownConfig ClientConf
+// SetClientConf ClientConf
 func SetClientConf(c ClientConfig) {
        clientConf = &c
        err := clientConf.CheckValidity()
@@ -102,11 +105,11 @@ func SetClientConf(c ClientConfig) {
                logger.Warnf("[ClientConfig CheckValidity] error: %v", err)
                return
        }
-       setClientGrpool()
+       setClientGrPool()
 }
 
-func setClientGrpool() {
-       clientGrpool = gxsync.NewTaskPoolSimple(clientConf.GrPoolSize)
+func setClientGrPool() {
+       clientGrPool = gxsync.NewTaskPoolSimple(clientConf.GrPoolSize)
 }
 
 // Options : param config
@@ -132,7 +135,7 @@ type Client struct {
        codec              remoting.Codec
 }
 
-// create client
+// NewClient create client
 func NewClient(opt Options) *Client {
        switch {
        case opt.ConnectTimeout == 0:
@@ -153,7 +156,7 @@ func NewClient(opt Options) *Client {
 func (c *Client) SetExchangeClient(client *remoting.ExchangeClient) {
 }
 
-// init client and try to connection.
+// Connect init client and try to connection.
 func (c *Client) Connect(url *common.URL) error {
        initClient(url.Protocol)
        c.conf = *clientConf
@@ -168,7 +171,7 @@ func (c *Client) Connect(url *common.URL) error {
        return err
 }
 
-// close network connection
+// Close close network connection
 func (c *Client) Close() {
        c.mux.Lock()
        client := c.gettyClient
@@ -180,7 +183,7 @@ func (c *Client) Close() {
        }
 }
 
-// send request
+// Request send request
 func (c *Client) Request(request *remoting.Request, timeout time.Duration, 
response *remoting.PendingResponse) error {
        _, session, err := c.selectSession(c.addr)
        if err != nil {
@@ -215,7 +218,7 @@ func (c *Client) Request(request *remoting.Request, timeout 
time.Duration, respo
        return perrors.WithStack(err)
 }
 
-// isAvailable returns true if the connection is available, or it can be 
re-established.
+// IsAvailable returns true if the connection is available, or it can be 
re-established.
 func (c *Client) IsAvailable() bool {
        client, _, err := c.selectSession(c.addr)
        return err == nil &&
diff --git a/remoting/getty/getty_server.go b/remoting/getty/getty_server.go
index a9ae886..f048bd7 100644
--- a/remoting/getty/getty_server.go
+++ b/remoting/getty/getty_server.go
@@ -46,27 +46,35 @@ import (
 var srvConf *ServerConfig
 
 func initServer(protocol string) {
-       // load clientconfig from provider_config
+       if protocol == "" {
+               return
+       }
+
+       // load server config from rootConfig.Protocols
        // default use dubbo
        if config.GetApplicationConfig() == nil {
                return
        }
-       protocolConf := config.GetProviderConfig().ProtocolConf
+       if config.GetRootConfig().Protocols == nil {
+               return
+       }
+
+       protocolConf := config.GetRootConfig().Protocols[protocol]
        defaultServerConfig := GetDefaultServerConfig()
        if protocolConf == nil {
-               logger.Info("protocol_conf default use dubbo config")
+               logger.Info("use default getty server config")
        } else {
-               dubboConf := 
protocolConf.(map[interface{}]interface{})[protocol]
-               if dubboConf == nil {
-                       logger.Warnf("dubboConf is nil")
+               gettyServerConfig := protocolConf.Params
+               if gettyServerConfig == nil {
+                       logger.Warnf("gettyServerConfig is nil")
                        return
                }
 
-               dubboConfByte, err := yaml.Marshal(dubboConf)
+               gettyServerConfigBytes, err := yaml.Marshal(gettyServerConfig)
                if err != nil {
                        panic(err)
                }
-               err = yaml.Unmarshal(dubboConfByte, &defaultServerConfig)
+               err = yaml.Unmarshal(gettyServerConfigBytes, 
&defaultServerConfig)
                if err != nil {
                        panic(err)
                }
diff --git a/remoting/getty/pool.go b/remoting/getty/pool.go
index 8b091a4..e30bafe 100644
--- a/remoting/getty/pool.go
+++ b/remoting/getty/pool.go
@@ -66,8 +66,8 @@ func newGettyRPCClientConn(rpcClient *Client, addr string) 
(*gettyRPCClient, err
                clientOpts = append(clientOpts, 
getty.WithClientSslEnabled(sslEnabled), 
getty.WithClientTlsConfigBuilder(config.GetClientTlsConfigBuilder()))
        }
 
-       if clientGrpool != nil {
-               clientOpts = append(clientOpts, 
getty.WithClientTaskPool(clientGrpool))
+       if clientGrPool != nil {
+               clientOpts = append(clientOpts, 
getty.WithClientTaskPool(clientGrPool))
        }
 
        gettyClient = getty.NewTCPClient(clientOpts...)

Reply via email to