func()

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)
	}
}