public List<String> sendCmd(String cmdStr, int expectedResults) throws IOException {
		Cmd cmd = new Cmd(cmdStr, expectedResults);

		synchronized (cmd) {
			try {
				cmdQueue.put(cmd);
				cmd.wait(dmgCmdTimeoutMS * 2);
				if (cmd.error != null) {
					throw cmd.error;
				}
				return cmd.results;
			}
			catch (InterruptedException ie) {
				//
			}
		}

		return cmd.results;
	}
Sends a command to the DMG server process.
<p>
ExpectedResults can be positive (ie. N result lines will be read from the
server process),
<li>0 (no result lines will be read),
<li>{@link Cmd#UNKNOWN_RESPONSE_COUNT UNKNOWN_RESPONSE_COUNT} const value
that indicates that the first response from the command will be the
number of following lines,
<li>or negative, meaning that an variable number of responses of size
abs(N) will be read from the server, where the first response from the
command is the variable number. In all, abs(N) * (first_response_int)
will be the total number of result lines returned.

@param cmdStr
@param expectedResults
@return
@throws IOException
Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/ios/dmg/DmgServerProcessManager.java