diff options
Diffstat (limited to 'rhimport/session_store.go')
-rw-r--r-- | rhimport/session_store.go | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/rhimport/session_store.go b/rhimport/session_store.go index d6dce9f..dafe71e 100644 --- a/rhimport/session_store.go +++ b/rhimport/session_store.go @@ -28,7 +28,9 @@ import ( "crypto/rand" "encoding/base64" "fmt" + "log" "net/http" + "strings" "time" "code.helsinki.at/rhrd-go/rddb" @@ -132,6 +134,8 @@ type SessionStore struct { store map[string]*SessionStoreUserElement conf *Config db *rddb.DBChan + stdlog *log.Logger + dbglog *log.Logger quit chan bool done chan bool newChan chan newSessionRequest @@ -177,10 +181,16 @@ func (store *SessionStore) new(ctx *Context, refId string) (resp newSessionRespo } ctx.conf = store.conf ctx.db = store.db + if pref := ctx.stdlog.Prefix(); strings.Contains(pref, "%s") { + ctx.stdlog.SetPrefix(fmt.Sprintf(pref, resp.id)) + } + if pref := ctx.dbglog.Prefix(); strings.Contains(pref, "%s") { + ctx.dbglog.SetPrefix(fmt.Sprintf(pref, resp.id)) + } s := &SessionStoreSessionElement{newSession(ctx, func() { store.GetInterface().Remove(ctx.UserName, resp.id) }), refId} store.store[ctx.UserName].sessions[resp.id] = s resp.session = store.store[ctx.UserName].sessions[resp.id].s.getInterface() - rhdl.Printf("SessionStore: created session for '%s' -> %s", ctx.UserName, resp.id) + store.dbglog.Printf("SessionStore: created session for '%s' -> %s", ctx.UserName, resp.id) store.store[ctx.UserName].callUpdateHandlerAdd(resp.id, refId) return } @@ -252,12 +262,12 @@ func (store *SessionStore) remove(username, id string) (resp removeSessionRespon go session.s.cleanup() // cleanup could take a while -> don't block all the other stuff refId := session.refId delete(user.sessions, id) - rhdl.Printf("SessionStore: removed session '%s/%s'", username, id) + store.dbglog.Printf("SessionStore: removed session '%s/%s'", username, id) user.callUpdateHandlerRemove(id, refId) if len(user.sessions) == 0 && len(user.updateCBs) == 0 { delete(store.store, username) - rhdl.Printf("SessionStore: removed user '%s'", username) + store.dbglog.Printf("SessionStore: removed user '%s'", username) } } else { resp.responsecode = http.StatusNotFound @@ -271,7 +281,7 @@ func (store *SessionStore) maintenanceTask() { user.callUpdateHandler(nil, nil) if len(user.sessions) == 0 && len(user.updateCBs) == 0 { delete(store.store, name) - rhdl.Printf("SessionStore: removed user '%s'", name) + store.dbglog.Printf("SessionStore: removed user '%s'", name) } } } @@ -379,10 +389,12 @@ func (store *SessionStore) Cleanup() { close(store.removeChan) } -func NewSessionStore(conf *Config, db *rddb.DBChan) (store *SessionStore, err error) { +func NewSessionStore(conf *Config, db *rddb.DBChan, stdlog, dbglog *log.Logger) (store *SessionStore, err error) { store = new(SessionStore) store.conf = conf store.db = db + store.stdlog = stdlog + store.dbglog = dbglog store.quit = make(chan bool, 1) store.done = make(chan bool) store.store = make(map[string]*SessionStoreUserElement) |