Skip to content
Snippets Groups Projects
Select Git revision
  • 6c8b5fe8eff25a63d92ecf8d832b06f3d8278e05
  • 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

default.go

Blame
  • user avatar
    haohongfan authored
    6c8b5fe8
    History
    default.go 4.95 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 proxy_factory
    
    import (
    	"context"
    	"reflect"
    	"strings"
    )
    
    import (
    	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/extension"
    	"github.com/apache/dubbo-go/common/logger"
    	"github.com/apache/dubbo-go/common/proxy"
    	"github.com/apache/dubbo-go/protocol"
    )
    
    func init() {
    	extension.SetProxyFactory("default", NewDefaultProxyFactory)
    }
    
    // DefaultProxyFactory is the default proxy factory
    type DefaultProxyFactory struct {
    	//delegate ProxyFactory
    }
    
    //you can rewrite DefaultProxyFactory in extension and delegate the default proxy factory like below
    
    //func WithDelegate(delegateProxyFactory ProxyFactory) Option {
    //	return func(proxy ProxyFactory) {
    //		proxy.(*DefaultProxyFactory).delegate = delegateProxyFactory
    //	}
    //}
    
    // NewDefaultProxyFactory returns a proxy factory instance
    func NewDefaultProxyFactory(_ ...proxy.Option) proxy.ProxyFactory {
    	return &DefaultProxyFactory{}
    }
    
    // GetProxy gets a proxy
    func (factory *DefaultProxyFactory) GetProxy(invoker protocol.Invoker, url *common.URL) *proxy.Proxy {
    	return factory.GetAsyncProxy(invoker, nil, url)
    }
    
    // GetAsyncProxy gets a async proxy
    func (factory *DefaultProxyFactory) GetAsyncProxy(invoker protocol.Invoker, callBack interface{}, url *common.URL) *proxy.Proxy {
    	//create proxy
    	attachments := map[string]string{}
    	attachments[constant.ASYNC_KEY] = url.GetParam(constant.ASYNC_KEY, "false")