本文整理汇总了Golang中github.com/hashicorp/golang-lru.New函数的典型用法代码示例。如果您正苦于以下问题:Golang New函数的具体用法?Golang New怎么用?Golang New使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了New函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: newQuotaEvaluator
// newQuotaEvaluator configures an admission controller that can enforce quota constraints
// using the provided registry. The registry must have the capability to handle group/kinds that
// are persisted by the server this admission controller is intercepting
func newQuotaEvaluator(client clientset.Interface, registry quota.Registry) (*quotaEvaluator, error) {
liveLookupCache, err := lru.New(100)
if err != nil {
return nil, err
}
updatedCache, err := lru.New(100)
if err != nil {
return nil, err
}
lw := &cache.ListWatch{
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
return client.Core().ResourceQuotas(api.NamespaceAll).List(options)
},
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return client.Core().ResourceQuotas(api.NamespaceAll).Watch(options)
},
}
indexer, reflector := cache.NewNamespaceKeyedIndexerAndReflector(lw, &api.ResourceQuota{}, 0)
reflector.Run()
return "aEvaluator{
client: client,
indexer: indexer,
registry: registry,
liveLookupCache: liveLookupCache,
liveTTL: time.Duration(30 * time.Second),
updatedQuotas: updatedCache,
queue: workqueue.New(),
work: map[string][]*admissionWaiter{},
dirtyWork: map[string][]*admissionWaiter{},
inProgress: sets.String{},
}, nil
}
开发者ID:40a,项目名称:bootkube,代码行数:37,代码来源:controller.go
示例2: newQuotaAccessor
// newQuotaAccessor creates an object that conforms to the QuotaAccessor interface to be used to retrieve quota objects.
func newQuotaAccessor(client clientset.Interface) (*quotaAccessor, error) {
liveLookupCache, err := lru.New(100)
if err != nil {
return nil, err
}
updatedCache, err := lru.New(100)
if err != nil {
return nil, err
}
lw := &cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
internalOptions := api.ListOptions{}
v1.Convert_v1_ListOptions_To_api_ListOptions(&options, &internalOptions, nil)
return client.Core().ResourceQuotas(api.NamespaceAll).List(internalOptions)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
internalOptions := api.ListOptions{}
v1.Convert_v1_ListOptions_To_api_ListOptions(&options, &internalOptions, nil)
return client.Core().ResourceQuotas(api.NamespaceAll).Watch(internalOptions)
},
}
indexer, reflector := cache.NewNamespaceKeyedIndexerAndReflector(lw, &api.ResourceQuota{}, 0)
return "aAccessor{
client: client,
indexer: indexer,
reflector: reflector,
liveLookupCache: liveLookupCache,
liveTTL: time.Duration(30 * time.Second),
updatedQuotas: updatedCache,
}, nil
}
开发者ID:kubernetes,项目名称:kubernetes,代码行数:33,代码来源:resource_access.go
示例3: main
func main() {
parse_flags()
var err error
if enable_cache {
// create cache
dns_cache, err = lru.New(1000)
if err != nil {
log.Fatal(err)
}
}
dns.HandleFunc(".", handleRoot)
logger = NewLogger(logfile, debug)
logger.Info("Listen on %s\n", bind_addr)
go func() {
/* listen tcp */
err := dns.ListenAndServe(bind_addr, "tcp", nil)
if err != nil {
log.Fatal(err)
}
}()
/* listen udp */
err = dns.ListenAndServe(bind_addr, "udp", nil)
if err != nil {
log.Fatal(err)
}
}
开发者ID:fangdingjun,项目名称:gdns,代码行数:32,代码来源:server.go
示例4: NewKeyCacheStandard
// NewKeyCacheStandard constructs a new KeyCacheStandard with the given
// cache capacity.
func NewKeyCacheStandard(capacity int) *KeyCacheStandard {
head, err := lru.New(capacity)
if err != nil {
panic(err.Error())
}
return &KeyCacheStandard{head}
}
开发者ID:gozes,项目名称:kbfs-beta,代码行数:9,代码来源:keycache.go
示例5: NewLimitRanger
// NewLimitRanger returns an object that enforces limits based on the supplied limit function
func NewLimitRanger(client clientset.Interface, actions LimitRangerActions) (admission.Interface, error) {
liveLookupCache, err := lru.New(10000)
if err != nil {
return nil, err
}
lw := &cache.ListWatch{
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
return client.Core().LimitRanges(api.NamespaceAll).List(options)
},
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return client.Core().LimitRanges(api.NamespaceAll).Watch(options)
},
}
indexer, reflector := cache.NewNamespaceKeyedIndexerAndReflector(lw, &api.LimitRange{}, 0)
reflector.Run()
if actions == nil {
actions = &DefaultLimitRangerActions{}
}
return &limitRanger{
Handler: admission.NewHandler(admission.Create, admission.Update),
client: client,
actions: actions,
indexer: indexer,
liveLookupCache: liveLookupCache,
liveTTL: time.Duration(30 * time.Second),
}, nil
}
开发者ID:CodeJuan,项目名称:kubernetes,代码行数:31,代码来源:admission.go
示例6: NewPointInPolygon
func NewPointInPolygon(source string, cache_size int, cache_trigger int, logger *log.WOFLogger) (*WOFPointInPolygon, error) {
rtree := rtreego.NewTree(2, 25, 50)
cache, err := lru.New(cache_size)
if err != nil {
return nil, err
}
metrics := NewPointInPolygonMetrics()
placetypes := make(map[string]int)
pip := WOFPointInPolygon{
Rtree: rtree,
Source: source,
Cache: cache,
CacheSize: cache_size,
CacheTrigger: cache_trigger,
Placetypes: placetypes,
Metrics: metrics,
Logger: logger,
}
return &pip, nil
}
开发者ID:missinglink,项目名称:go-whosonfirst-pip,代码行数:27,代码来源:pip.go
示例7: NewMDCacheStandard
// NewMDCacheStandard constructs a new MDCacheStandard using the given
// cache capacity.
func NewMDCacheStandard(capacity int) *MDCacheStandard {
tmp, err := lru.New(capacity)
if err != nil {
return nil
}
return &MDCacheStandard{tmp}
}
开发者ID:gozes,项目名称:kbfs-beta,代码行数:9,代码来源:mdcache.go
示例8: NewDatastore
// NewDatastore constructs a new LRU Datastore with given capacity.
func NewDatastore(capacity int) (*Datastore, error) {
cache, err := lru.New(capacity)
if err != nil {
return nil, err
}
return &Datastore{cache: cache}, nil
}
开发者ID:carriercomm,项目名称:interplanetary,代码行数:9,代码来源:datastore.go
示例9: newFlowCache
func newFlowCache() *flowCache {
c, err := lru.New(8192)
if err != nil {
panic(fmt.Sprintf("LRU flow cache: %v", err))
}
return &flowCache{
cache: c,
}
}
开发者ID:yebinMoon,项目名称:cherry,代码行数:10,代码来源:switch.go
示例10: NewCache
func NewCache(limit int, ttl time.Duration) *Cache {
var cache *lru.Cache
if 0 < limit {
var err error
cache, err = lru.New(limit)
if err != nil {
panic(err)
}
}
return &Cache{cache: cache, TTL: ttl}
}
开发者ID:Comcast,项目名称:rulio,代码行数:11,代码来源:cache.go
示例11: NewStatusAdmitter
// NewStatusAdmitter creates a plugin wrapper that ensures every accepted
// route has a status field set that matches this router. The admitter manages
// an LRU of recently seen conflicting updates to handle when two router processes
// with differing configurations are writing updates at the same time.
func NewStatusAdmitter(plugin router.Plugin, client client.RoutesNamespacer, name string) *StatusAdmitter {
expected, _ := lru.New(1024)
return &StatusAdmitter{
plugin: plugin,
client: client,
routerName: name,
contentionInterval: 1 * time.Minute,
expected: expected,
}
}
开发者ID:Xmagicer,项目名称:origin,代码行数:15,代码来源:status.go
示例12: NewLifecycle
// NewLifecycle creates a new namespace lifecycle admission control handler
func NewLifecycle(c clientset.Interface, immortalNamespaces sets.String) (admission.Interface, error) {
forceLiveLookupCache, err := lru.New(100)
if err != nil {
panic(err)
}
return &lifecycle{
Handler: admission.NewHandler(admission.Create, admission.Update, admission.Delete),
client: c,
immortalNamespaces: immortalNamespaces,
forceLiveLookupCache: forceLiveLookupCache,
}, nil
}
开发者ID:PeterLamar,项目名称:kubernetes,代码行数:13,代码来源:admission.go
示例13: setup
func (pc *ProofCache) setup() error {
pc.Lock()
defer pc.Unlock()
if pc.lru != nil {
return nil
}
lru, err := lru.New(pc.capac)
if err != nil {
return err
}
pc.lru = lru
return nil
}
开发者ID:moul,项目名称:client,代码行数:13,代码来源:proof_cache.go
示例14: Put
func (cs lrustore) Put(key string, value interface{}) {
prefix, key := key[:PREFIX_LEN], key[PREFIX_LEN:]
mp, ok := cs[prefix]
if !ok {
var err error
mp, err = lru.New(10000)
if err != nil {
return
}
cs[prefix] = mp
}
mp.Add(key, value)
}
开发者ID:rinor,项目名称:cgrates,代码行数:13,代码来源:cache_store.go
示例15: NewEtcdMutationCache
// NewEtcdMutationCache gives back a MutationCache that understands how to deal with etcd backed objects
func NewEtcdMutationCache(backingCache cache.Store) MutationCache {
lru, err := lru.New(100)
if err != nil {
// errors only happen on invalid sizes, this would be programmer error
panic(err)
}
return &mutationCache{
backingCache: backingCache,
mutationCache: lru,
comparator: etcd.APIObjectVersioner{},
}
}
开发者ID:Xmagicer,项目名称:origin,代码行数:14,代码来源:mutation_cache.go
示例16: newImageResolutionCache
// newImageResolutionCache creates a new resolver that caches frequently loaded images for one minute.
func newImageResolutionCache(images client.ImageInterface, tags client.ImageStreamTagsNamespacer, isImages client.ImageStreamImagesNamespacer, integratedRegistry rules.RegistryMatcher) (*imageResolutionCache, error) {
imageCache, err := lru.New(128)
if err != nil {
return nil, err
}
return &imageResolutionCache{
images: images,
tags: tags,
isImages: isImages,
integrated: integratedRegistry,
cache: imageCache,
expiration: time.Minute,
}, nil
}
开发者ID:abhgupta,项目名称:origin,代码行数:15,代码来源:imagepolicy.go
示例17: New
func New(fn Hash) *Map {
lru_cache, err := lru.New(50000)
if err != nil {
log.Fatal("Lru cache failed")
}
m := &Map{
hash: fn,
hashMap: make(map[int]string),
lru_cache: lru_cache,
}
if m.hash == nil {
m.hash = crc32.ChecksumIEEE
}
return m
}
开发者ID:wooparadog,项目名称:statsd-proxy-go,代码行数:15,代码来源:consistenthash.go
示例18: newQuotaAccessor
// newQuotaAccessor creates an object that conforms to the QuotaAccessor interface to be used to retrieve quota objects.
func newQuotaAccessor(clusterQuotaLister *ocache.IndexerToClusterResourceQuotaLister, namespaceLister *cache.IndexerToNamespaceLister, clusterQuotaClient oclient.ClusterResourceQuotasInterface, clusterQuotaMapper clusterquotamapping.ClusterQuotaMapper) *clusterQuotaAccessor {
updatedCache, err := lru.New(100)
if err != nil {
// this should never happen
panic(err)
}
return &clusterQuotaAccessor{
clusterQuotaLister: clusterQuotaLister,
namespaceLister: namespaceLister,
clusterQuotaClient: clusterQuotaClient,
clusterQuotaMapper: clusterQuotaMapper,
updatedClusterQuotas: updatedCache,
}
}
开发者ID:juanluisvaladas,项目名称:origin,代码行数:16,代码来源:accessor.go
示例19: TestAdmitPodInNamespaceWithoutQuota
// TestAdmitPodInNamespaceWithoutQuota ensures that if a namespace has no quota, that a pod can get in
func TestAdmitPodInNamespaceWithoutQuota(t *testing.T) {
resourceQuota := &api.ResourceQuota{
ObjectMeta: api.ObjectMeta{Name: "quota", Namespace: "other", ResourceVersion: "124"},
Status: api.ResourceQuotaStatus{
Hard: api.ResourceList{
api.ResourceCPU: resource.MustParse("3"),
api.ResourceMemory: resource.MustParse("100Gi"),
api.ResourceLimitsMemory: resource.MustParse("200Gi"),
api.ResourcePods: resource.MustParse("5"),
},
Used: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"),
api.ResourceMemory: resource.MustParse("50Gi"),
api.ResourceLimitsMemory: resource.MustParse("100Gi"),
api.ResourcePods: resource.MustParse("3"),
},
},
}
kubeClient := fake.NewSimpleClientset(resourceQuota)
indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{"namespace": cache.MetaNamespaceIndexFunc})
liveLookupCache, err := lru.New(100)
if err != nil {
t.Fatal(err)
}
stopCh := make(chan struct{})
defer close(stopCh)
quotaAccessor, _ := newQuotaAccessor(kubeClient)
quotaAccessor.indexer = indexer
quotaAccessor.liveLookupCache = liveLookupCache
go quotaAccessor.Run(stopCh)
evaluator := NewQuotaEvaluator(quotaAccessor, install.NewRegistry(kubeClient), nil, 5, stopCh)
defer utilruntime.HandleCrash()
handler := "aAdmission{
Handler: admission.NewHandler(admission.Create, admission.Update),
evaluator: evaluator,
}
// Add to the index
indexer.Add(resourceQuota)
newPod := validPod("not-allowed-pod", 1, getResourceRequirements(getResourceList("100m", "2Gi"), getResourceList("200m", "")))
// Add to the lru cache so we do not do a live client lookup
liveLookupCache.Add(newPod.Namespace, liveLookupEntry{expiry: time.Now().Add(time.Duration(30 * time.Second)), items: []*api.ResourceQuota{}})
err = handler.Admit(admission.NewAttributesRecord(newPod, nil, api.Kind("Pod").WithVersion("version"), newPod.Namespace, newPod.Name, api.Resource("pods").WithVersion("version"), "", admission.Create, nil))
if err != nil {
t.Errorf("Did not expect an error because the pod is in a different namespace than the quota")
}
}
开发者ID:Xmagicer,项目名称:origin,代码行数:49,代码来源:admission_test.go
示例20: New
// Create a new state from a given trie
func New(root common.Hash, db ethdb.Database) (*StateDB, error) {
tr, err := trie.NewSecure(root, db)
if err != nil {
return nil, err
}
csc, _ := lru.New(codeSizeCacheSize)
return &StateDB{
db: db,
trie: tr,
codeSizeCache: csc,
stateObjects: make(map[common.Address]*StateObject),
stateObjectsDirty: make(map[common.Address]struct{}),
refund: new(big.Int),
logs: make(map[common.Hash]vm.Logs),
}, nil
}
开发者ID:expanse-project,项目名称:go-expanse,代码行数:17,代码来源:statedb.go
注:本文中的github.com/hashicorp/golang-lru.New函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论