代码拉取完成,页面将自动刷新
package client_conn
import (
"errors"
"fmt"
"github.com/bluele/gcache"
"google.golang.org/grpc"
"math"
"time"
)
var (
internalCache gcache.Cache
internalNotFound = errors.New("object not found")
)
const (
internalCachePrefix = "kelvins-%v"
internalCacheExpire = 24 * time.Hour
)
func init() {
internalCache = gcache.New(math.MaxInt16).LRU().Build()
}
func getRPCConn(serviceName string) (conn *grpc.ClientConn, err error) {
key := genInternalCacheKey(serviceName)
exist := internalCache.Has(key)
if exist {
var value interface{}
value, err = internalCache.Get(key)
if err != nil {
return
}
if value == nil {
err = internalNotFound
return
}
connCache, ok := value.(*grpc.ClientConn)
if ok {
conn = connCache
return
}
}
err = internalNotFound
return
}
func storageRPCConn(serviceName string, conn *grpc.ClientConn) error {
key := genInternalCacheKey(serviceName)
return internalCache.Set(key, conn)
}
func genInternalCacheKey(serviceName string) string {
return fmt.Sprintf(internalCachePrefix, serviceName)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。