ducky/devices

Paddy 2015-11-15 Parent:408abf6e48d3 Child:34130c700842

6:e0bf06577ba5 Go to Latest

ducky/devices/memstore.go

Ignore coverage output. Add a .hgignore file to ignore the output file that tracks our test coverage.

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