Callback rather than output channel

This commit is contained in:
Bel LaPointe
2018-10-09 08:03:29 -06:00
parent eefb3d4163
commit 3339d7754f
2 changed files with 15 additions and 32 deletions

View File

@@ -14,19 +14,18 @@ import (
)
type Monitor struct {
newItems chan Item
triggeredItems chan Item
port string
server *http.Server
newItems chan Item
trigger func(string)
port string
server *http.Server
}
func New(port string) (*Monitor, error) {
func New(port string, trigger func(string)) (*Monitor, error) {
newItems := make(chan Item)
triggeredItems := make(chan Item)
return &Monitor{
newItems: newItems,
triggeredItems: triggeredItems,
port: port,
newItems: newItems,
trigger: trigger,
port: port,
}, nil
}
@@ -77,7 +76,7 @@ func (monitor *Monitor) Start() error {
if err := monitor.listen(); err != nil {
select {
case errs <- err:
case <-time.After(time.Second * 10):
case <-time.After(time.Second * 5):
panic(err)
}
}
@@ -86,7 +85,7 @@ func (monitor *Monitor) Start() error {
if err := monitor.loop(); err != nil {
select {
case errs <- err:
case <-time.After(time.Second * 10):
case <-time.After(time.Second * 5):
panic(err)
}
}
@@ -94,7 +93,7 @@ func (monitor *Monitor) Start() error {
select {
case err := <-errs:
return fmt.Errorf("%s: %v", "monitor server quit early", err)
case <-time.After(time.Second * 5):
case <-time.After(time.Second * 2):
}
return nil
}
@@ -130,11 +129,8 @@ func (monitor *Monitor) loop() error {
if !ok {
return errors.New("queue contains illegal item")
}
select {
case monitor.triggeredItems <- *item:
item.increment()
case <-time.After(time.Second * 10):
}
monitor.trigger(item.URL)
item.increment()
queue.Put(item)
if nextEvent, err = nextEventTime(queue); err != nil {
return err