| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package bep44
- import (
- "sync"
- )
- var _ Store = &Memory{}
- type Memory struct {
- // protects m
- mu sync.RWMutex
- m map[Target]*Item
- }
- func NewMemory() *Memory {
- return &Memory{
- m: make(map[Target]*Item),
- }
- }
- func (m *Memory) Put(i *Item) error {
- m.mu.Lock()
- defer m.mu.Unlock()
- m.m[i.Target()] = i
- return nil
- }
- func (m *Memory) Get(t Target) (*Item, error) {
- m.mu.Lock()
- defer m.mu.Unlock()
- i, ok := m.m[t]
- if !ok {
- return nil, ErrItemNotFound
- }
- return i, nil
- }
- func (m *Memory) Del(t Target) error {
- m.mu.Lock()
- defer m.mu.Unlock()
- delete(m.m, t)
- return nil
- }
|