X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=src%2Ffoundation%2Fapi%2Frevel%2Fsession_engine.go;fp=src%2Ffoundation%2Fapi%2Frevel%2Fsession_engine.go;h=1f95d7b3a06a164193dde01332c642f1fe5cc8c7;hb=1d1ee6961c93781e1187d8c7faa868da6b2f01f4;hp=0000000000000000000000000000000000000000;hpb=56dd5e0f2164b37b40ac1daa188ccc618b4cbd19;p=iec.git diff --git a/src/foundation/api/revel/session_engine.go b/src/foundation/api/revel/session_engine.go new file mode 100644 index 0000000..1f95d7b --- /dev/null +++ b/src/foundation/api/revel/session_engine.go @@ -0,0 +1,35 @@ +package revel + +// The session engine provides an interface to allow for storage of session data +type ( + SessionEngine interface { + Decode(c *Controller) // Called to decode the session information on the controller + Encode(c *Controller) // Called to encode the session information on the controller + } +) + +var ( + sessionEngineMap = map[string]func() SessionEngine{} + CurrentSessionEngine SessionEngine +) + +// Initialize session engine on startup +func init() { + OnAppStart(initSessionEngine, 5) +} + +func RegisterSessionEngine(f func() SessionEngine, name string) { + sessionEngineMap[name] = f +} + +// Called when application is starting up +func initSessionEngine() { + // Check for session engine to use and assign it + sename := Config.StringDefault("session.engine", "revel-cookie") + if se, found := sessionEngineMap[sename]; found { + CurrentSessionEngine = se() + } else { + sessionLog.Warn("Session engine '%s' not found, using default session engine revel-cookie", sename) + CurrentSessionEngine = sessionEngineMap["revel-cookie"]() + } +}