Skip to content
Snippets Groups Projects
Select Git revision
  • f5bc9ed02c6ad5eb0fe7c78a283b39c3a8bda22e
  • master default protected
  • 3.0
  • develop
  • revert-2069-tripleVersion
  • 3.1
  • rest-protocol
  • feat/remoting_rocketmq
  • dapr-support
  • 1.5
  • 1.4
  • 1.3
  • 1.2
  • 1.1
  • v3.0.3-rc2
  • v3.0.3-rc1
  • v3.0.2
  • v1.5.8
  • v1.5.9-rc1
  • v3.0.1
  • v1.5.8-rc1
  • v3.0.0
  • v3.0.0-rc4-1
  • v3.0.0-rc4
  • v3.0.0-rc3
  • v1.5.7
  • v1.5.7-rc2
  • v3.0.0-rc2
  • remove
  • v1.5.7-rc1
  • v3.0.0-rc1
  • v1.5.7-rc1-tmp
  • 1.5.6
  • v1.5.6
34 results

impl.go

Blame
  • impl.go 5.80 KiB
    /*
     * 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 nacos
    
    import (
    	"strings"
    	"sync"
    )
    
    import (
    	gxset "github.com/dubbogo/gost/container/set"
    	"github.com/nacos-group/nacos-sdk-go/vo"
    	perrors "github.com/pkg/errors"
    )
    
    import (
    	"github.com/apache/dubbo-go/common"
    	"github.com/apache/dubbo-go/common/constant"
    	"github.com/apache/dubbo-go/common/logger"
    	"github.com/apache/dubbo-go/config_center"
    	"github.com/apache/dubbo-go/config_center/parser"
    )
    
    const nacosClientName = "nacos config_center"
    
    type nacosDynamicConfiguration struct {
    	url          *common.URL
    	rootPath     string
    	wg           sync.WaitGroup
    	cltLock      sync.Mutex
    	done         chan struct{}
    	client       *NacosClient
    	keyListeners sync.Map
    	parser       parser.ConfigurationParser
    }
    
    func newNacosDynamicConfiguration(url *common.URL) (*nacosDynamicConfiguration, error) {
    	c := &nacosDynamicConfiguration{
    		rootPath: "/" + url.GetParam(constant.CONFIG_NAMESPACE_KEY, config_center.DEFAULT_GROUP) + "/config",
    		url:      url,
    		done:     make(chan struct{}),
    	}
    	err := ValidateNacosClient(c, WithNacosName(nacosClientName))
    	if err != nil {
    		logger.Errorf("nacos client start error ,error message is %v", err)
    		return nil, err
    	}
    	c.wg.Add(1)
    	go HandleClientRestart(c)
    	return c, err
    
    }
    
    // AddListener Add listener
    func (n *nacosDynamicConfiguration) AddListener(key string, listener config_center.ConfigurationListener, opions ...config_center.Option) {