building functions for storing and recalling data
This commit is contained in:
parent
9cca9814ae
commit
8fc26c5520
@ -1,15 +1,16 @@
|
||||
package eros
|
||||
|
||||
import (
|
||||
"github.com/prologic/bitcask"
|
||||
"protomolecule/src/dust"
|
||||
"encoding/json"
|
||||
//"errors"
|
||||
"github.com/prologic/bitcask"
|
||||
)
|
||||
|
||||
var db *bitcask.Bitcask
|
||||
|
||||
// these values should be defined by config
|
||||
var DataDir string = "./.eros-data"
|
||||
|
||||
// //
|
||||
|
||||
//
|
||||
@ -21,19 +22,20 @@ var DataDir string = "./.eros-data"
|
||||
// Services UUIDs (Services)
|
||||
//
|
||||
|
||||
//this struct is to be marshalled into json before stored in bitcask
|
||||
// this struct is to be marshalled into json before stored in bitcask
|
||||
type Details struct {
|
||||
LocalName string
|
||||
LocalName string
|
||||
Advertisement []byte
|
||||
Services []string
|
||||
Services []string
|
||||
}
|
||||
|
||||
// we use this to nest the populated Details struct associated with the MAC
|
||||
type Device struct {
|
||||
MAC string
|
||||
Info Details
|
||||
MAC string
|
||||
Info Details
|
||||
}
|
||||
|
||||
// create the data directory if it does not exist; initialize bitcask in this directory
|
||||
func Awaken() {
|
||||
//log.Debug().Str("DataDir",DataDir).Msg("Initializing eros...")
|
||||
db, err := bitcask.Open(DataDir)
|
||||
@ -42,6 +44,45 @@ func Awaken() {
|
||||
}
|
||||
}
|
||||
|
||||
func Remember(mac string, adv []byte, services []string) {
|
||||
// placeholder
|
||||
// store device details into the database
|
||||
func Remember(mac string, name string, adv []byte, services []string) error {
|
||||
var err error
|
||||
|
||||
details := Details{
|
||||
LocalName: name,
|
||||
Advertisement: adv,
|
||||
Services: services,
|
||||
}
|
||||
|
||||
device := Device{
|
||||
MAC: mac,
|
||||
Info: details,
|
||||
}
|
||||
|
||||
var jsonData []byte
|
||||
jsonData, err = json.Marshal(device)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = db.Put([]byte(mac), jsonData)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// retrieve device details from the database
|
||||
func Recall(mac string) (Device, error) {
|
||||
var err error
|
||||
var bytes []byte
|
||||
|
||||
bytes, err = db.Get([]byte(mac))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var member Device
|
||||
|
||||
json.Unmarshal(bytes, &member)
|
||||
|
||||
return member, err
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user