1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // Copyright 2020 The Xorm Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package caches
- import "sync"
- type Manager struct {
- cacher Cacher
- disableGlobalCache bool
- cachers map[string]Cacher
- cacherLock sync.RWMutex
- }
- func NewManager() *Manager {
- return &Manager{
- cachers: make(map[string]Cacher),
- }
- }
- // SetDisableGlobalCache disable global cache or not
- func (mgr *Manager) SetDisableGlobalCache(disable bool) {
- if mgr.disableGlobalCache != disable {
- mgr.disableGlobalCache = disable
- }
- }
- func (mgr *Manager) SetCacher(tableName string, cacher Cacher) {
- mgr.cacherLock.Lock()
- mgr.cachers[tableName] = cacher
- mgr.cacherLock.Unlock()
- }
- func (mgr *Manager) GetCacher(tableName string) Cacher {
- var cacher Cacher
- var ok bool
- mgr.cacherLock.RLock()
- cacher, ok = mgr.cachers[tableName]
- mgr.cacherLock.RUnlock()
- if !ok && !mgr.disableGlobalCache {
- cacher = mgr.cacher
- }
- return cacher
- }
- // SetDefaultCacher set the default cacher. Xorm's default not enable cacher.
- func (mgr *Manager) SetDefaultCacher(cacher Cacher) {
- mgr.cacher = cacher
- }
- // GetDefaultCacher returns the default cacher
- func (mgr *Manager) GetDefaultCacher() Cacher {
- return mgr.cacher
- }
|