ducky/devices

Paddy 2015-11-12 Child:408abf6e48d3

4:7bc6a84ac906 Go to Latest

ducky/devices/memstore.go

Minimal Memstore implementation. Create an in-memory version of the Storer that meets the minimal requirements set by our Storer tests so far.

History
1 package devices
3 import (
4 "sync"
6 "code.secondbit.org/uuid.hg"
7 "golang.org/x/net/context"
8 )
10 type Memstore struct {
11 devices map[string]Device
12 lock sync.RWMutex
13 }
15 func NewMemstore() *Memstore {
16 return &Memstore{
17 devices: map[string]Device{},
18 }
19 }
21 func (m *Memstore) GetDevices(ids []uuid.ID, c context.Context) (map[string]Device, error) {
22 m.lock.RLock()
23 defer m.lock.RUnlock()
25 results := map[string]Device{}
27 for _, id := range ids {
28 device, ok := m.devices[id.String()]
29 if !ok {
30 continue
31 }
32 results[id.String()] = device
33 }
34 return results, nil
35 }
37 func (m *Memstore) UpdateDevice(change DeviceChange, c context.Context) error {
38 return nil
39 }
41 func (m *Memstore) DeleteDevices(id []uuid.ID, c context.Context) error {
42 return nil
43 }
45 func (m *Memstore) CreateDevices(devices []Device, c context.Context) error {
46 m.lock.Lock()
47 defer m.lock.Unlock()
49 for _, device := range devices {
50 m.devices[device.ID.String()] = device
51 }
52 return nil
53 }
55 func (m *Memstore) ListDevicesByOwner(user uuid.ID, c context.Context) ([]Device, error) {
56 return []Device{}, nil
57 }
59 func (m *Memstore) Factory(c context.Context) (Storer, error) {
60 return NewMemstore(), nil
61 }
63 func (m *Memstore) Destroy(c context.Context) error {
64 m.devices = nil
65 return nil
66 }