answer to the right command
This commit is contained in:
parent
9ef425d827
commit
8865335515
3 changed files with 16 additions and 13 deletions
|
@ -26,8 +26,9 @@ func togglePause(hub circolog.Hub, verbose bool) http.HandlerFunc {
|
||||||
if verbose {
|
if verbose {
|
||||||
log.Printf("[%s] %s - toggled pause", r.Method, r.RemoteAddr)
|
log.Printf("[%s] %s - toggled pause", r.Method, r.RemoteAddr)
|
||||||
}
|
}
|
||||||
hub.Commands <- circolog.HubFullCommand{Command: circolog.CommandPauseToggle}
|
response := make(chan circolog.CommandResponse)
|
||||||
resp := <-hub.Responses
|
hub.Commands <- circolog.HubFullCommand{Command: circolog.CommandPauseToggle, Response: response}
|
||||||
|
resp := <-response
|
||||||
active := resp.Value.(bool)
|
active := resp.Value.(bool)
|
||||||
w.Header().Set("content-type", "application/json")
|
w.Header().Set("content-type", "application/json")
|
||||||
enc := json.NewEncoder(w)
|
enc := json.NewEncoder(w)
|
||||||
|
@ -40,8 +41,9 @@ func clearQueue(hub circolog.Hub, verbose bool) http.HandlerFunc {
|
||||||
if verbose {
|
if verbose {
|
||||||
log.Printf("[%s] %s - cleared queue", r.Method, r.RemoteAddr)
|
log.Printf("[%s] %s - cleared queue", r.Method, r.RemoteAddr)
|
||||||
}
|
}
|
||||||
hub.Commands <- circolog.HubFullCommand{Command: circolog.CommandClear}
|
response := make(chan circolog.CommandResponse)
|
||||||
resp := <-hub.Responses
|
hub.Commands <- circolog.HubFullCommand{Command: circolog.CommandClear, Response: response}
|
||||||
|
resp := <-response
|
||||||
success := resp.Value.(bool)
|
success := resp.Value.(bool)
|
||||||
w.Header().Set("content-type", "application/json")
|
w.Header().Set("content-type", "application/json")
|
||||||
enc := json.NewEncoder(w)
|
enc := json.NewEncoder(w)
|
||||||
|
|
|
@ -108,8 +108,9 @@ func main() {
|
||||||
select {
|
select {
|
||||||
case sig := <-interrupt:
|
case sig := <-interrupt:
|
||||||
if sig == syscall.SIGUSR1 {
|
if sig == syscall.SIGUSR1 {
|
||||||
hub.Commands <- circolog.HubFullCommand{Command: circolog.CommandPauseToggle}
|
response := make(chan circolog.CommandResponse)
|
||||||
resp := <-hub.Responses
|
hub.Commands <- circolog.HubFullCommand{Command: circolog.CommandPauseToggle, Response: response}
|
||||||
|
resp := <-response
|
||||||
if resp.Value.(bool) {
|
if resp.Value.(bool) {
|
||||||
log.Println("resumed")
|
log.Println("resumed")
|
||||||
} else {
|
} else {
|
||||||
|
@ -117,8 +118,9 @@ func main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if sig == syscall.SIGUSR2 {
|
if sig == syscall.SIGUSR2 {
|
||||||
hub.Commands <- circolog.HubFullCommand{Command: circolog.CommandClear}
|
response := make(chan circolog.CommandResponse)
|
||||||
resp := <-hub.Responses
|
hub.Commands <- circolog.HubFullCommand{Command: circolog.CommandClear, Response: response}
|
||||||
|
resp := <-response
|
||||||
if resp.Value.(bool) {
|
if resp.Value.(bool) {
|
||||||
log.Println("buffer cleaned")
|
log.Println("buffer cleaned")
|
||||||
} else {
|
} else {
|
||||||
|
|
7
hub.go
7
hub.go
|
@ -36,6 +36,7 @@ const (
|
||||||
// An HubFullCommand is a Command, complete with arguments
|
// An HubFullCommand is a Command, complete with arguments
|
||||||
type HubFullCommand struct {
|
type HubFullCommand struct {
|
||||||
Command HubCommand
|
Command HubCommand
|
||||||
|
Response chan CommandResponse
|
||||||
}
|
}
|
||||||
type CommandResponse struct {
|
type CommandResponse struct {
|
||||||
Value interface{}
|
Value interface{}
|
||||||
|
@ -46,7 +47,6 @@ type Hub struct {
|
||||||
Unregister chan Client
|
Unregister chan Client
|
||||||
LogMessages chan format.LogParts
|
LogMessages chan format.LogParts
|
||||||
Commands chan HubFullCommand
|
Commands chan HubFullCommand
|
||||||
Responses chan CommandResponse
|
|
||||||
|
|
||||||
clients map[Client]bool
|
clients map[Client]bool
|
||||||
circbuf *ring.Ring
|
circbuf *ring.Ring
|
||||||
|
@ -59,7 +59,6 @@ func NewHub(ringBufSize int) Hub {
|
||||||
Unregister: make(chan Client),
|
Unregister: make(chan Client),
|
||||||
LogMessages: make(chan format.LogParts),
|
LogMessages: make(chan format.LogParts),
|
||||||
Commands: make(chan HubFullCommand),
|
Commands: make(chan HubFullCommand),
|
||||||
Responses: make(chan CommandResponse),
|
|
||||||
circbuf: ring.New(ringBufSize),
|
circbuf: ring.New(ringBufSize),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -125,11 +124,11 @@ func (h *Hub) Run() {
|
||||||
case cmd := <-h.Commands:
|
case cmd := <-h.Commands:
|
||||||
if cmd.Command == CommandClear {
|
if cmd.Command == CommandClear {
|
||||||
h.clear()
|
h.clear()
|
||||||
h.Responses <- CommandResponse{Value: true}
|
cmd.Response <- CommandResponse{Value: true}
|
||||||
}
|
}
|
||||||
if cmd.Command == CommandPauseToggle {
|
if cmd.Command == CommandPauseToggle {
|
||||||
active = !active
|
active = !active
|
||||||
h.Responses <- CommandResponse{Value: active}
|
cmd.Response <- CommandResponse{Value: active}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue