Helpers for bool<>[]byte conversion.

This commit is contained in:
Jamie Holdstock 2021-06-01 14:56:16 +08:00 committed by Jamie Holdstock
parent 49af391b0c
commit 4db50a4439
3 changed files with 17 additions and 13 deletions

View File

@ -105,6 +105,18 @@ func bytesToUint32(bytes []byte) uint32 {
return binary.LittleEndian.Uint32(bytes)
}
func bytesToBool(bytes []byte) bool {
return bytes[0] == 1
}
func boolToBytes(b bool) []byte {
if b {
return []byte{1}
}
return []byte{0}
}
// CreateNew intializes a new bbolt database with all of the necessary vspd
// buckets, and inserts:
// - the provided extended pubkey (to be used for deriving fee addresses).

View File

@ -172,12 +172,7 @@ func putTicketInBucket(bkt *bolt.Bucket, ticket Ticket) error {
if err = bkt.Put(feeExpirationK, int64ToBytes(ticket.FeeExpiration)); err != nil {
return err
}
confirmed := []byte{0}
if ticket.Confirmed {
confirmed = []byte{1}
}
if err = bkt.Put(confirmedK, confirmed); err != nil {
if err = bkt.Put(confirmedK, boolToBytes(ticket.Confirmed)); err != nil {
return err
}
@ -205,10 +200,7 @@ func getTicketFromBkt(bkt *bolt.Bucket) (Ticket, error) {
ticket.FeeAmount = bytesToInt64(bkt.Get(feeAmountK))
ticket.FeeExpiration = bytesToInt64(bkt.Get(feeExpirationK))
// TODO is this dodgy?
if bkt.Get(confirmedK)[0] == byte(1) {
ticket.Confirmed = true
}
ticket.Confirmed = bytesToBool(bkt.Get(confirmedK))
ticket.VoteChoices = make(map[string]string)
err := json.Unmarshal(bkt.Get(voteChoicesK), &ticket.VoteChoices)
@ -316,7 +308,7 @@ func (vdb *VspDatabase) GetUnconfirmedTickets() ([]Ticket, error) {
defer vdb.ticketsMtx.RUnlock()
return vdb.filterTickets(func(t *bolt.Bucket) bool {
return t.Get(confirmedK)[0] == byte(0)
return !bytesToBool(t.Get(confirmedK))
})
}
@ -327,7 +319,7 @@ func (vdb *VspDatabase) GetPendingFees() ([]Ticket, error) {
defer vdb.ticketsMtx.RUnlock()
return vdb.filterTickets(func(t *bolt.Bucket) bool {
return t.Get(confirmedK)[0] == byte(1) && FeeStatus(t.Get(feeTxStatusK)) == FeeReceieved
return bytesToBool(t.Get(confirmedK)) && FeeStatus(t.Get(feeTxStatusK)) == FeeReceieved
})
}

View File

@ -238,7 +238,7 @@ func testFilterTickets(t *testing.T) {
// Only one ticket should be confirmed.
retrieved, err = db.filterTickets(func(t *bolt.Bucket) bool {
return t.Get(confirmedK)[0] == byte(1)
return bytesToBool(t.Get(confirmedK))
})
if err != nil {
t.Fatalf("error filtering tickets: %v", err)