001/* 002 * To change this template, choose Tools | Templates 003 * and open the template in the editor. 004 */ 005package org.anarres.qemu.exec; 006 007import java.util.List; 008import javax.annotation.Nonnull; 009import org.anarres.qemu.exec.recipe.QEmuMonitorRecipe; 010import org.anarres.qemu.exec.recipe.QEmuVirtioSerialRecipe; 011 012/** 013 * A character device backend, usually paired with a {@link QEmuDeviceOption} frontend. 014 * 015 * @see QEmuVirtioSerialRecipe 016 * @see QEmuMonitorRecipe 017 * @see QEmuDeviceOption 018 * @author shevek 019 */ 020public class QEmuMonitorOption extends AbstractQEmuOption { 021 022 public static enum Mode { 023 024 readline, control; 025 } 026 public final String chardev; 027 private Mode mode = Mode.control; 028 private boolean startup = true; 029 030 public QEmuMonitorOption(@Nonnull String chardev) { 031 this.chardev = chardev; 032 } 033 034 public QEmuMonitorOption(@Nonnull QEmuChardevOption option) { 035 this(option.id); 036 } 037 038 @Nonnull 039 public QEmuMonitorOption withMode(Mode mode) { 040 this.mode = mode; 041 return this; 042 } 043 044 @Nonnull 045 public QEmuMonitorOption withStartup(boolean startup) { 046 this.startup = startup; 047 return this; 048 } 049 050 @Override 051 public void appendTo(List<? super String> line) { 052 StringBuilder buf = new StringBuilder(chardev); 053 appendTo(buf, "mode", mode); 054 add(line, "-mon", buf); 055 if (!startup) 056 add(line, "-S"); 057 } 058}