in go/wtl/proxy/driverhub/debugger/debugger.go [221:274]
func (d *Debugger) processCommand(cmd *command) {
d.mu.Lock()
defer d.mu.Unlock()
response := &response{ID: cmd.ID, Status: "error"}
switch cmd.Command {
case "continue":
d.healthy = true
d.step = false
if d.waiting != nil {
close(d.waiting)
}
response.Status = "running"
case "step":
d.healthy = true
d.step = true
if d.waiting != nil {
close(d.waiting)
}
response.Status = "running"
case "stop":
os.Exit(-1)
case "set breakpoint":
if cmd.Breakpoint == nil {
break
}
bp := cmd.Breakpoint
if err := bp.initialize(); err != nil {
break
}
d.breakpoints[bp.ID] = bp
response.Status = "waiting"
case "delete breakpoint":
if cmd.Breakpoint == nil {
break
}
delete(d.breakpoints, cmd.Breakpoint.ID)
response.Status = "waiting"
}
bytes, err := json.Marshal(response)
if err != nil {
log.Print(err)
return
}
if _, err := d.conn.Write(bytes); err != nil {
log.Print(err)
}
}