50 lines
741 B
Go
50 lines
741 B
Go
package backend
|
|
|
|
import "strings"
|
|
|
|
type Backend struct {
|
|
s *State
|
|
c chan Command
|
|
log []string
|
|
}
|
|
|
|
func NewBackend() *Backend {
|
|
b := &Backend{
|
|
s: NewState(),
|
|
c: make(chan Command),
|
|
log: make([]string, 0),
|
|
}
|
|
go b.Run()
|
|
|
|
return b
|
|
}
|
|
|
|
func (b *Backend) Out() *State {
|
|
return b.s
|
|
}
|
|
|
|
func (b *Backend) In() chan Command {
|
|
return b.c
|
|
}
|
|
|
|
func (b *Backend) Run() {
|
|
for cmd := range b.c {
|
|
switch cmd.Name {
|
|
case CommandAdd:
|
|
newName, ok := cmd.Args[ArgName]
|
|
if ok {
|
|
newNameStr, ok := newName.(string)
|
|
if ok {
|
|
b.s.Watched.Append(newNameStr)
|
|
b.Log("Item added: " + newNameStr)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func (b *Backend) Log(msg string) {
|
|
b.log = append(b.log, msg)
|
|
b.s.Log.Set(strings.Join(b.log, "\n"))
|
|
}
|