Command.java
- /*
- * #%L
- * This file is part of jFold.
- * %%
- * Copyright (C) 2012 - 2024 Mike Thomas <mikepthomas@outlook.com>
- * %%
- * jFold is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * %
- * jFold is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- * %
- * You should have received a copy of the GNU General Public License
- * along with jFold. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
- package info.mikethomas.jfold.util;
- import lombok.AllArgsConstructor;
- import lombok.Getter;
- /**
- * <p>Command class.</p>
- *
- * @author Michael Thomas (mikepthomas@outlook.com)
- * @version 7.6.21
- */
- @AllArgsConstructor
- @Getter
- public enum Command {
- // <editor-fold defaultstate="collapsed" desc="Commands">
- /** Authenticate. */
- AUTH("auth", ResponseType.VOID),
- /** Error message. */
- ERROR("error", ResponseType.PYON),
- /** Exit the command processor. */
- EXIT("exit", ResponseType.VOID),
- /** Prints an increasing heartbeat count. */
- HEARTBEAT("heartbeat", ResponseType.PYON),
- /** Enable/disable log updates. */
- LOG_UPDATES("log-updates", ResponseType.PYON), // start | restart | stop
- /** Exit the command processor. */
- QUIT("quit", ResponseType.VOID),
- /**
- * Unpause all slots which are paused waiting for a screensaver and pause
- * them again on disconnect.
- */
- SCREENSAVER("screensaver", ResponseType.VOID),
- /** Enable/disable updates. */
- UPDATES("updates", ResponseType.VOID), // add <id> <rate> <expression> | del <id> | list | clear | reset
- // Folding@home Client:
- /** Bond a packet file to a outgoing debug socket connection. */
- BOND("bond", ResponseType.VOID), // <ip>:<port> <input> [output] [ip:port]
- /**
- * Return a PyON message indicating if the client has set a user, team or
- * passkey.
- */
- CONFIGURED("configured", ResponseType.PYON),
- /** Run one client cycle. */
- DO_CYCLE("do-cycle", ResponseType.VOID),
- /**
- * Download a core.
- *
- * @deprecated Command no longer supported.
- */
- @Deprecated
- DOWNLOAD_CORE("download-core", ResponseType.VOID), // <type> <url>
- /** Finish all or one slot(s). */
- FINISH("finish", ResponseType.VOID), // [slot]
- /** Print application information. */
- GET_INFO("get-info", ResponseType.STRING), // <category> <key>
- /** Print application information in PyON format. */
- INFO("info", ResponseType.PYON),
- /**
- * Inject a packet file to a listening debug socket. Will wait until packet
- * is processed.
- */
- INJECT("inject", ResponseType.VOID), // <ip>:<port> <input> [output] [ip:port]
- /** Disable specified unit states. */
- MASK_UNIT_STATE("mask-unit-state", ResponseType.VOID),
- /** Get number of slots in PyON format. */
- NUM_SLOTS("num-slots", ResponseType.PYON),
- /** Get or set a configuration option. */
- OPTION("option", ResponseType.STRING), // <name> [value]
- /**
- * List or set options with their values.
- *
- * If no name arguments are given then all options with non-default values
- * will be listed. If the '-d' argument is given then even defaulted options
- * will be listed. If the '-a' option is given then unset options will also
- * be listed. Otherwise, if option names are provided only those options
- * will be listed.
- * The special name '*' lists all options which have not yet been listed and
- * is affected by the '-d' and '-a' options.
- * If a name argument is followed directly by an equal sign then the rest of
- * the argument will be used to set the option's value. If instead a name
- * argument is followed immediately by a '!' then the option will be reset
- * to its default value.
- * Options which are set or reset will also be listed.
- * Options are listed as a PyON format dictionary.
- */
- OPTIONS("options", ResponseType.PYON),
- /** Pause all or one slot(s). */
- PAUSE("pause", ResponseType.VOID), // [slot]
- /** Get current total estimated Points Per Day. */
- PPD("ppd", ResponseType.PYON),
- /** Get work unit queue information in PyON format. */
- QUEUE_INFO("queue-info", ResponseType.PYON),
- /** Request an ID from the assignment server. */
- REQUEST_ID("request-id", ResponseType.VOID),
- /** Request work server assignment from the assignment server. */
- REQUEST_WS("request-ws", ResponseType.VOID),
- /**
- * Save the configuration either to the specified file or to the file the
- * configuration was last loaded from.
- */
- SAVE("save", ResponseType.VOID), // [file]
- /** Shutdown the application. */
- SHUTDOWN("shutdown", ResponseType.VOID),
- /** Get current simulation information. */
- SIMULATION_INFO("simulation-info", ResponseType.PYON), // <slot id>
- /**
- * Add a new slot. Configuration options for the new slot can be provided.
- */
- SLOT_ADD("slot-add", ResponseType.VOID), // <type> [<name>=<value>]...
- /** Delete a slot. If it is running a unit it will be stopped. */
- SLOT_DELETE("slot-delete", ResponseType.VOID), // <slot>
- /** Get slot information in PyON format. */
- SLOT_INFO("slot-info", ResponseType.PYON),
- /**
- * Modify an existing slot.
- *
- * Configuration options can be either set or reset using the same syntax
- * used by the 'options' command.
- */
- SLOT_MODIFY("slot-modify", ResponseType.VOID), // <id> <type> [<name><! | =<value>>]...
- /**
- * The first argument is the slot ID.
- *
- * See 'options' help for a description of the remaining arguments.
- */
- SLOT_OPTIONS("slot-options", ResponseType.PYON), // <slot> [-d | -a] | [name]...
- /** Get current protein trajectory. */
- TRAJECTORY("trajectory", ResponseType.VOID), // <slot id>
- /** Trigger config save after a delay. */
- TRIGGER_SAVE("trigger-save", ResponseType.VOID),
- /** Unpause all or one slot(s). */
- UNPAUSE("unpause", ResponseType.VOID), // [slot]
- /** Print application uptime. */
- UPTIME("uptime", ResponseType.STRING),
- /** Wait for all running units to finish. */
- WAIT_FOR_UNITS("wait-for-units", ResponseType.VOID),
- // Standard Commands:
- /** Add two values. */
- ADD("add", ResponseType.VOID), // <number> <number>
- /** Clear the screen. */
- CLEAR("clear", ResponseType.VOID),
- /**
- * Print the date and time.
- *
- * Optionally, with 'format'. See: man strftime
- */
- DATE("date", ResponseType.VOID), // [format]
- /** Divide two values. */
- DIV("div", ResponseType.VOID), // <number> <number>
- /** Evaluate all arguments. */
- EVAL("eval", ResponseType.VOID), // [expr]...
- /**
- * If 'cond' evaluates to a non-empty string then evalute 'expr1' otherwise,
- * if provided, evaluate 'expr2'.
- */
- IF("if", ResponseType.VOID), // <cond> <expr1> [expr2]
- /** Multiply two values. */
- MUL("mul", ResponseType.VOID), // <number> <number>
- /** Invert the truth value of the argument. */
- NOT("not", ResponseType.VOID), // <expr>
- /** Sleep for a number of seconds. */
- SLEEP("sleep", ResponseType.VOID), // <seconds>
- /** Subtract two values. */
- SUB("sub", ResponseType.VOID); // <number> <number>
- // </editor-fold>
- /**
- * Command.
- *
- * @return String Folding@Home command.
- */
- private final String command;
- /**
- * Response type of this command.
- *
- * @return ResponseType type of response.
- */
- private final ResponseType responseType;
- /** {@inheritDoc} */
- @Override
- public String toString() {
- return command;
- }
- }