// backendLoop is the backend for the processing of messages. func (c *cell) backendLoop(l loop.Loop) error { totalCellsID := identifier.Identifier("cells", c.env.ID(), "total-cells") monitoring.IncrVariable(totalCellsID) defer monitoring.DecrVariable(totalCellsID) for { select { case <-l.ShallStop(): return c.behavior.Terminate() case event := <-c.eventc: if event == nil { panic("received illegal nil event!") } measuring := monitoring.BeginMeasuring(c.measuringID) err := c.behavior.ProcessEvent(event) measuring.EndMeasuring() if err != nil { logger.Errorf("cell %q processed event %q with error: %v", c.id, event.Topic(), err) return err } } } }
// backendLoop is the backend for the processing of messages. func (c *cell) backendLoop(l loop.Loop) error { monitoring.IncrVariable(identifier.Identifier("cells", c.env.ID(), "total-cells")) defer monitoring.DecrVariable(identifier.Identifier("cells", c.env.ID(), "total-cells")) for { select { case <-l.ShallStop(): return c.behavior.Terminate() case subscribers := <-c.subscriberc: c.subscribers = subscribers case event := <-c.eventc: if event == nil { panic("received illegal nil event!") } measuring := monitoring.BeginMeasuring(c.measuringID) err := c.behavior.ProcessEvent(event) if err != nil { c.loop.Kill(err) continue } measuring.EndMeasuring() } } }
// DecrVariable implements Monitoring. func (m *standardMonitoring) DecrVariable(id string) { monitoring.DecrVariable(id) }