Storage has now it's own package.

Remove global `sessions` map and use configured storage.
Add a `types` package so both `pwd` and `storage` can access without
circular dependencies.
Now the session is prepared when requested and not on load.
This commit is contained in:
Jonathan Leibiusky @xetorthio
2017-06-14 18:35:21 -03:00
parent 2eff799c58
commit e9911abf94
22 changed files with 814 additions and 499 deletions

View File

@@ -3,11 +3,12 @@ package handlers
import (
"log"
"os"
"time"
"github.com/docker/docker/client"
"github.com/play-with-docker/play-with-docker/config"
"github.com/play-with-docker/play-with-docker/docker"
"github.com/play-with-docker/play-with-docker/pwd"
"github.com/play-with-docker/play-with-docker/storage"
)
var core pwd.PWDApi
@@ -28,16 +29,11 @@ func Bootstrap() {
t := pwd.NewScheduler(Broadcast, d)
s := pwd.NewStorage()
core = pwd.NewPWD(d, t, Broadcast, s)
loadStart := time.Now()
err = core.SessionLoadAndPrepare()
loadElapsed := time.Since(loadStart)
log.Printf("***************** Loading stored sessions took %s\n", loadElapsed)
s, err := storage.NewFileStorage(config.SessionsFile)
if err != nil && !os.IsNotExist(err) {
log.Fatal("Error decoding sessions from disk ", err)
}
core = pwd.NewPWD(d, t, Broadcast, s)
}