This required a change in the event system to add an "activity" field. This is meant to be generic in the case that there is more than one need for it, but at the moment, allows a poke to tell that it is a poke in response to an apply that just finished, instead of a regular poke or backpoke in which all that matters is timestamp updates, because there wasn't any actual work done (since that state was okay).
56 lines
1.7 KiB
Go
56 lines
1.7 KiB
Go
// Mgmt
|
|
// Copyright (C) 2013-2016+ James Shubin and the project contributors
|
|
// Written by James Shubin <james@shubin.ca> and the project contributors
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Affero General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Affero General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
package main
|
|
|
|
//go:generate stringer -type=eventName -output=eventname_stringer.go
|
|
type eventName int
|
|
|
|
const (
|
|
eventExit eventName = iota
|
|
eventStart
|
|
eventPause
|
|
eventPoke
|
|
eventBackPoke
|
|
)
|
|
|
|
type Event struct {
|
|
Name eventName
|
|
Resp chan bool // channel to send an ack response on, nil to skip
|
|
//Wg *sync.WaitGroup // receiver barrier to Wait() for everyone else on
|
|
Msg string // some words for fun
|
|
Activity bool // did something interesting happen?
|
|
}
|
|
|
|
// send a single acknowledgement on the channel if one was requested
|
|
func (event *Event) ACK() {
|
|
if event.Resp != nil { // if they've requested an ACK
|
|
event.Resp <- true // send ACK
|
|
}
|
|
}
|
|
|
|
func (event *Event) NACK() {
|
|
if event.Resp != nil { // if they've requested an ACK
|
|
event.Resp <- false // send NACK
|
|
}
|
|
}
|
|
|
|
// get the activity value
|
|
func (event *Event) GetActivity() bool {
|
|
return event.Activity
|
|
}
|