package net.northking.cctp.upperComputer.driver.agent.command;

import net.northking.cctp.upperComputer.driver.agent.command.protocol.AbstractProtocolCommand;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

/**
 * 剪贴板指令，如果提供的text不为null，则设置设备的剪贴板为给定内容<br>
 * 指令会返回操作后（如果text不为null）设备的剪贴板文本内容（可用来判断是否设置成功）
 */
public class ClipboardCommand extends AbstractProtocolCommand<String> {

    /**
     * 要设置的内容
     */
    private String text = null;

    public ClipboardCommand() {
    }

    public ClipboardCommand(String text) {
        this.text = text;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    @Override
    public int getCommandId() {
        return 36;
    }

    @Override
    public void doSend(DataOutput output) throws IOException {
        if (text != null) {
            output.writeBoolean(true);
            sendText(output, text);
        } else {
            output.writeBoolean(false);
        }
    }

    @Override
    public String buildReceive(DataInput input) throws IOException {
        if (input.readBoolean()) {
            return readText(input);
        }
        return null;
    }
}
