Fixed concurrent map write
This commit is contained in:
parent
8b421ea59e
commit
7bad7a5ce8
1 changed files with 9 additions and 0 deletions
|
|
@ -11,6 +11,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Engine struct {
|
type Engine struct {
|
||||||
|
|
@ -22,6 +23,10 @@ type Engine struct {
|
||||||
DevMode bool
|
DevMode bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
templateLock sync.Mutex
|
||||||
|
)
|
||||||
|
|
||||||
func NewEngine(viewFS, staticFS fs.FS, devmode bool) (e Engine, err error) { // {{{
|
func NewEngine(viewFS, staticFS fs.FS, devmode bool) (e Engine, err error) { // {{{
|
||||||
e.parsedTemplates = make(map[string]*template.Template)
|
e.parsedTemplates = make(map[string]*template.Template)
|
||||||
e.viewFS = viewFS
|
e.viewFS = viewFS
|
||||||
|
|
@ -62,7 +67,9 @@ func (e *Engine) getComponentFilenames() (files []string, err error) { // {{{
|
||||||
} // }}}
|
} // }}}
|
||||||
|
|
||||||
func (e *Engine) ReloadTemplates() { // {{{
|
func (e *Engine) ReloadTemplates() { // {{{
|
||||||
|
templateLock.Lock()
|
||||||
e.parsedTemplates = make(map[string]*template.Template)
|
e.parsedTemplates = make(map[string]*template.Template)
|
||||||
|
templateLock.Unlock()
|
||||||
} // }}}
|
} // }}}
|
||||||
|
|
||||||
func (e *Engine) StaticResource(w http.ResponseWriter, r *http.Request) { // {{{
|
func (e *Engine) StaticResource(w http.ResponseWriter, r *http.Request) { // {{{
|
||||||
|
|
@ -119,7 +126,9 @@ func (e *Engine) getPage(layout, page string) (tmpl *template.Template, err erro
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
templateLock.Lock()
|
||||||
e.parsedTemplates[page] = tmpl
|
e.parsedTemplates[page] = tmpl
|
||||||
|
templateLock.Unlock()
|
||||||
return
|
return
|
||||||
} // }}}
|
} // }}}
|
||||||
func (e *Engine) Render(p Page, w http.ResponseWriter, r *http.Request) (err error) { // {{{
|
func (e *Engine) Render(p Page, w http.ResponseWriter, r *http.Request) (err error) { // {{{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue