annotate auth/persistent.go @ 199:ddc7ef95c247

Implemented Add of persistent sessions.
author Sascha L. Teichmann <teichmann@intevation.de>
date Fri, 20 Jul 2018 23:06:53 +0200
parents e85413e5befa
children 8426a92fda00
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
190
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package auth
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 import (
193
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
4 "bytes"
190
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 "database/sql"
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 "log"
193
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
7 "time"
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
8
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
9 bolt "github.com/coreos/bbolt"
190
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 )
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 type PersistentConnectionPool struct {
193
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
13 db *bolt.DB
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
14 conns map[string]*Connection
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
15 cmds chan func(*PersistentConnectionPool)
190
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 }
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17
193
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
18 var sessionsBucket = []byte("sessions")
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
19
190
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20 func NewPersistentConnectionPool(filename string) (*PersistentConnectionPool, error) {
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21
193
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
22 db, err := bolt.Open(filename, 0600, nil)
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
23 if err != nil {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
24 return nil, err
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
25 }
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
26
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
27 conns := make(map[string]*Connection)
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
28 err = db.Update(func(tx *bolt.Tx) error {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
29 b, err := tx.CreateBucketIfNotExists(sessionsBucket)
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
30 if err != nil {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
31 return err
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
32 }
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
33
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
34 // pre-load sessions
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
35 c := b.Cursor()
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
36
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
37 for k, v := c.First(); k != nil; k, v = c.Next() {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
38 var conn Connection
197
e85413e5befa Cleaned up serialisation/deserilisation of sessions a bit.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 193
diff changeset
39 if err := conn.deserialize(bytes.NewReader(v)); err != nil {
193
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
40 return err
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
41 }
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
42 conns[string(k)] = &conn
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
43 }
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
44
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
45 return nil
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
46 })
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
47
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
48 if err != nil {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
49 db.Close()
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
50 return nil, err
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
51 }
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
52
190
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
53 pcp := &PersistentConnectionPool{
193
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
54 db: db,
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
55 conns: conns,
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
56 cmds: make(chan func(*PersistentConnectionPool)),
190
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 }
193
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
58 go pcp.run()
190
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
59 return pcp, nil
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
60 }
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
61
193
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
62 func (pcp *PersistentConnectionPool) run() {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
63 for {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
64 select {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
65 case cmd := <-pcp.cmds:
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
66 cmd(pcp)
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
67 case <-time.After(time.Minute):
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
68 pcp.cleanDB()
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
69 case <-time.After(time.Minute * 5):
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
70 pcp.cleanToken()
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
71 }
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
72 }
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
73 }
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
74
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
75 func (pcp *PersistentConnectionPool) cleanDB() {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
76 log.Println("cleanDB: Not implemented, yet.")
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
77 }
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
78
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
79 func (pcp *PersistentConnectionPool) cleanToken() {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
80 log.Println("cleanToken: Not implemented, yet.")
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
81 }
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
82
190
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
83 func (pcp *PersistentConnectionPool) Delete(token string) bool {
193
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
84 res := make(chan bool)
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
85 pcp.cmds <- func(pcp *PersistentConnectionPool) {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
86 conn, found := pcp.conns[token]
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
87 if !found {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
88 res <- false
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
89 return
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
90 }
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
91 conn.close()
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
92 delete(pcp.conns, token)
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
93 err := pcp.db.Update(func(tx *bolt.Tx) error {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
94 b := tx.Bucket(sessionsBucket)
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
95 return b.Delete([]byte(token))
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
96 })
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
97 if err != nil {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
98 log.Printf("error: %v\n", err)
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
99 }
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
100 res <- true
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
101 }
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
102 return <-res
190
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
103 }
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
104
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
105 func (pcp *PersistentConnectionPool) Add(token string, session *Session) *Connection {
199
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
106 res := make(chan *Connection)
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
107
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
108 pcp.cmds <- func(cp *PersistentConnectionPool) {
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
109 con := pcp.conns[token]
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
110 if con == nil {
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
111 con = &Connection{}
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
112 pcp.conns[token] = con
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
113 }
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
114 con.set(session)
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
115 err := pcp.db.Update(func(tx *bolt.Tx) error {
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
116 b := tx.Bucket(sessionsBucket)
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
117 var buf bytes.Buffer
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
118 if err := con.serialize(&buf); err != nil {
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
119 return err
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
120 }
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
121 return b.Put([]byte(token), buf.Bytes())
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
122 })
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
123 if err != nil {
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
124 log.Printf("error: %v\n", err)
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
125 }
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
126 res <- con
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
127 }
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
128
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
129 con := <-res
ddc7ef95c247 Implemented Add of persistent sessions.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 197
diff changeset
130 return con
190
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
131 }
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
132
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
133 func (pcp *PersistentConnectionPool) Renew(token string) (string, error) {
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
134 log.Println("Renew: Not implemented, yet.")
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
135 return "", nil
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
136 }
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
137
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
138 func (pcp *PersistentConnectionPool) Do(token string, fn func(*sql.DB) error) error {
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
139 log.Println("Do: Not implemented, yet.")
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
140 return nil
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
141 }
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
142
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
143 func (pcp *PersistentConnectionPool) Session(token string) *Session {
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
144 log.Println("Session: Not implemented, yet.")
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
145 return nil
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
146 }
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
147
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
148 func (pcp *PersistentConnectionPool) Shutdown() error {
193
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
149 log.Println("info: shutdown persistent connection pool.")
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
150 if db := pcp.db; db != nil {
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
151 pcp.db = nil
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
152 return db.Close()
1585c334e8a7 More on persisting sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 190
diff changeset
153 }
190
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
154 return nil
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
155 }