30 lines
449 B
Go
30 lines
449 B
Go
package shell
|
|
|
|
import (
|
|
"mongo.games.com/game/gamesrv/base"
|
|
"sync"
|
|
)
|
|
|
|
func Session(s *base.SlotsSession, key string, category string) *Shell {
|
|
var m *sync.Map
|
|
v := s.Value(key)
|
|
if v == nil {
|
|
m = &sync.Map{}
|
|
s.Set(key, m)
|
|
} else {
|
|
m = v.(*sync.Map)
|
|
}
|
|
|
|
var shell *Shell
|
|
v, ok := m.Load(key)
|
|
if !ok {
|
|
shell = NewShell(category)
|
|
m.Store(key, shell)
|
|
} else {
|
|
shell = v.(*Shell)
|
|
shell.UpdateCategory(category)
|
|
}
|
|
|
|
return shell
|
|
}
|