세션키를 자체 발급하도록 수정
This commit is contained in:
@ -9,22 +9,17 @@ import (
|
||||
)
|
||||
|
||||
type cache_stage[T any] struct {
|
||||
cache map[string]T
|
||||
deleted map[string]bool
|
||||
cache map[storagekey]T
|
||||
deleted map[storagekey]bool
|
||||
}
|
||||
|
||||
func make_cache_stage[T any]() *cache_stage[T] {
|
||||
return &cache_stage[T]{
|
||||
cache: make(map[string]T),
|
||||
deleted: make(map[string]bool),
|
||||
cache: make(map[storagekey]T),
|
||||
deleted: make(map[storagekey]bool),
|
||||
}
|
||||
}
|
||||
|
||||
type Consumer interface {
|
||||
Query(string) (*Authorization, error)
|
||||
Touch(string) (*Authorization, error)
|
||||
}
|
||||
|
||||
type consumer_common[T any] struct {
|
||||
lock sync.Mutex
|
||||
ttl time.Duration
|
||||
@ -33,36 +28,36 @@ type consumer_common[T any] struct {
|
||||
startTime time.Time
|
||||
}
|
||||
|
||||
func (c *consumer_common[T]) add_internal(key string, si T) {
|
||||
c.stages[0].cache[key] = si
|
||||
delete(c.stages[0].deleted, key)
|
||||
c.stages[1].cache[key] = si
|
||||
delete(c.stages[1].deleted, key)
|
||||
func (c *consumer_common[T]) add_internal(sk storagekey, si T) {
|
||||
c.stages[0].cache[sk] = si
|
||||
delete(c.stages[0].deleted, sk)
|
||||
c.stages[1].cache[sk] = si
|
||||
delete(c.stages[1].deleted, sk)
|
||||
|
||||
logger.Printf("add : %v, %v\n", *c.stages[0], *c.stages[1])
|
||||
}
|
||||
|
||||
func (c *consumer_common[T]) add(key string, si T) {
|
||||
func (c *consumer_common[T]) add(sk storagekey, si T) {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
|
||||
c.add_internal(key, si)
|
||||
c.add_internal(sk, si)
|
||||
}
|
||||
|
||||
func (c *consumer_common[T]) delete_internal(key string) {
|
||||
delete(c.stages[0].cache, key)
|
||||
c.stages[0].deleted[key] = true
|
||||
delete(c.stages[1].cache, key)
|
||||
c.stages[1].deleted[key] = true
|
||||
func (c *consumer_common[T]) delete_internal(sk storagekey) {
|
||||
delete(c.stages[0].cache, sk)
|
||||
c.stages[0].deleted[sk] = true
|
||||
delete(c.stages[1].cache, sk)
|
||||
c.stages[1].deleted[sk] = true
|
||||
|
||||
logger.Printf("delete : %v, %v\n", *c.stages[0], *c.stages[1])
|
||||
}
|
||||
|
||||
func (c *consumer_common[T]) delete(key string) {
|
||||
func (c *consumer_common[T]) delete(sk storagekey) {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
|
||||
c.delete_internal(key)
|
||||
c.delete_internal(sk)
|
||||
}
|
||||
|
||||
func (c *consumer_common[T]) changeStage() {
|
||||
|
||||
Reference in New Issue
Block a user