summaryrefslogtreecommitdiff
path: root/rhimport/session_store.go
diff options
context:
space:
mode:
Diffstat (limited to 'rhimport/session_store.go')
-rw-r--r--rhimport/session_store.go22
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)