cblocks.go 991 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package cblocks
  2. import (
  3. "html/template"
  4. "sync"
  5. )
  6. type cache struct {
  7. CacheBlock1 map[string]template.HTML
  8. CacheBlock2 map[string]template.HTML
  9. CacheBlock3 map[string]template.HTML
  10. CacheBlock4 map[string]template.HTML
  11. CacheBlock5 map[string]template.HTML
  12. }
  13. type CacheBlocks struct {
  14. mutex *sync.Mutex
  15. cacheBlocks map[string]cache
  16. }
  17. func New() *CacheBlocks {
  18. return &CacheBlocks{
  19. mutex: &sync.Mutex{},
  20. cacheBlocks: map[string]cache{},
  21. }
  22. }
  23. func (this *CacheBlocks) prepare(host string) {
  24. if _, ok := this.cacheBlocks[host]; !ok {
  25. this.cacheBlocks[host] = cache{
  26. CacheBlock1: map[string]template.HTML{},
  27. CacheBlock2: map[string]template.HTML{},
  28. CacheBlock3: map[string]template.HTML{},
  29. CacheBlock4: map[string]template.HTML{},
  30. CacheBlock5: map[string]template.HTML{},
  31. }
  32. }
  33. }
  34. func (this *CacheBlocks) Reset(host string) {
  35. this.mutex.Lock()
  36. if _, ok := this.cacheBlocks[host]; ok {
  37. delete(this.cacheBlocks, host)
  38. }
  39. this.mutex.Unlock()
  40. }