Skip to content

Commit 6fa7a4a

Browse files
committed
session: add session get and put helpers
1 parent 6765707 commit 6fa7a4a

File tree

1 file changed

+30
-48
lines changed

1 file changed

+30
-48
lines changed

session/kvdb_store.go

Lines changed: 30 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -206,10 +206,6 @@ func (db *BoltStore) NewSession(id ID, localPrivKey *btcec.PrivateKey,
206206
//
207207
// NOTE: this is part of the Store interface.
208208
func (db *BoltStore) CreateSession(session *Session) error {
209-
var buf bytes.Buffer
210-
if err := SerializeSession(&buf, session); err != nil {
211-
return err
212-
}
213209
sessionKey := getSessionKey(session)
214210

215211
return db.Update(func(tx *bbolt.Tx) error {
@@ -246,21 +242,7 @@ func (db *BoltStore) CreateSession(session *Session) error {
246242
}
247243

248244
for _, id := range sessionIDs {
249-
keyBytes, err := getKeyForID(
250-
sessionBucket, id,
251-
)
252-
if err != nil {
253-
return err
254-
}
255-
256-
v := sessionBucket.Get(keyBytes)
257-
if len(v) == 0 {
258-
return ErrSessionNotFound
259-
}
260-
261-
sess, err := DeserializeSession(
262-
bytes.NewReader(v),
263-
)
245+
sess, err := getSessionByID(sessionBucket, id)
264246
if err != nil {
265247
return err
266248
}
@@ -291,7 +273,7 @@ func (db *BoltStore) CreateSession(session *Session) error {
291273
return err
292274
}
293275

294-
return sessionBucket.Put(sessionKey, buf.Bytes())
276+
return putSession(sessionBucket, session)
295277
})
296278
}
297279

@@ -325,12 +307,7 @@ func (db *BoltStore) UpdateSessionRemotePubKey(localPubKey,
325307

326308
session.RemotePublicKey = remotePubKey
327309

328-
var buf bytes.Buffer
329-
if err := SerializeSession(&buf, session); err != nil {
330-
return err
331-
}
332-
333-
return sessionBucket.Put(key, buf.Bytes())
310+
return putSession(sessionBucket, session)
334311
})
335312
}
336313

@@ -441,7 +418,7 @@ func (db *BoltStore) listSessions(filterFn func(s *Session) bool) ([]*Session, e
441418
// state.
442419
//
443420
// NOTE: this is part of the Store interface.
444-
func (db *DB) DeleteReservedSessions() error {
421+
func (db *BoltStore) DeleteReservedSessions() error {
445422
return db.Update(func(tx *bbolt.Tx) error {
446423
sessionBucket, err := getBucket(tx, sessionBucketKey)
447424
if err != nil {
@@ -555,12 +532,7 @@ func (db *BoltStore) RevokeSession(key *btcec.PublicKey) error {
555532
session.State = StateRevoked
556533
session.RevokedAt = db.clock.Now().UTC()
557534

558-
var buf bytes.Buffer
559-
if err := SerializeSession(&buf, session); err != nil {
560-
return err
561-
}
562-
563-
return sessionBucket.Put(key.SerializeCompressed(), buf.Bytes())
535+
return putSession(sessionBucket, session)
564536
})
565537
}
566538

@@ -575,22 +547,9 @@ func (db *BoltStore) GetSessionByID(id ID) (*Session, error) {
575547
return err
576548
}
577549

578-
keyBytes, err := getKeyForID(sessionBucket, id)
579-
if err != nil {
580-
return err
581-
}
582-
583-
v := sessionBucket.Get(keyBytes)
584-
if len(v) == 0 {
585-
return ErrSessionNotFound
586-
}
550+
session, err = getSessionByID(sessionBucket, id)
587551

588-
session, err = DeserializeSession(bytes.NewReader(v))
589-
if err != nil {
590-
return err
591-
}
592-
593-
return nil
552+
return err
594553
})
595554
if err != nil {
596555
return nil, err
@@ -897,3 +856,26 @@ func addIDToGroupIDPair(sessionBkt *bbolt.Bucket, id, groupID ID) error {
897856

898857
return sessionIDsBkt.Put(seqNoBytes[:], id[:])
899858
}
859+
860+
func getSessionByID(bucket *bbolt.Bucket, id ID) (*Session, error) {
861+
keyBytes, err := getKeyForID(bucket, id)
862+
if err != nil {
863+
return nil, err
864+
}
865+
866+
v := bucket.Get(keyBytes)
867+
if len(v) == 0 {
868+
return nil, ErrSessionNotFound
869+
}
870+
871+
return DeserializeSession(bytes.NewReader(v))
872+
}
873+
874+
func putSession(bucket *bbolt.Bucket, session *Session) error {
875+
var buf bytes.Buffer
876+
if err := SerializeSession(&buf, session); err != nil {
877+
return err
878+
}
879+
880+
return bucket.Put(getSessionKey(session), buf.Bytes())
881+
}

0 commit comments

Comments
 (0)