package cc.blynk.client; import cc.blynk.client.core.ActiveHardwareClient; import cc.blynk.client.core.AppClient; import cc.blynk.client.core.HardwareClient; import cc.blynk.client.enums.ClientMode; import cc.blynk.utils.ParseUtil; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.DefaultParser; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import java.io.BufferedReader; import java.io.InputStreamReader; /** * The Blynk Project. * Created by Dmitriy Dumanskiy. * Created on 11.03.15. */ public class ClientLauncher { static final String DEFAULT_HOST = "localhost"; static final int DEFAULT_HARDWARE_PORT = 8442; static final int DEFAULT_APPLICATION_PORT = 8443; private static final Options options = new Options(); static { options.addOption("host", true, "Server host or ip.") .addOption("port", true, "Port client should connect to.") .addOption("mode", true, "Client mode. 'hardware' or 'app'.") .addOption("tokens", true, "Tokens"); } public static void main(String[] args) throws ParseException { CommandLine cmd = new DefaultParser().parse(options, args); ClientMode mode = ClientMode.parse(cmd.getOptionValue("mode", ClientMode.HARDWARE.name())); String host = cmd.getOptionValue("host", DEFAULT_HOST); int port = ParseUtil.parseInt(cmd.getOptionValue("port", (mode == ClientMode.APP ? String.valueOf(DEFAULT_APPLICATION_PORT) : String.valueOf(DEFAULT_HARDWARE_PORT))) ); switch (mode) { case APP : new AppClient(host, port).start(new BufferedReader(new InputStreamReader(System.in))); break; case HARDWARE : new HardwareClient(host, port).start(new BufferedReader(new InputStreamReader(System.in))); break; default : String tokensFullString = cmd.getOptionValue("tokens"); if (tokensFullString == null) { throw new RuntimeException("Tokens required for TEST mode."); } String[] tokens = tokensFullString.split(","); for (String token : tokens) { new ActiveHardwareClient(host, port).start(token); } } } }