package de.uhilger.calypso.handler; import com.sun.net.httpserver.HttpExchange; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; /** * Hier muss noch die Implementierung mit Unix Domain Sockets folgen, * sobald Java 16 fuer 64-bit Raspberry Pi 4 erhaeltlich ist. * * Bis dahin wird hier (dirty trick) ein Shell Skript aufgerufen, * das mit Hilfe des Tools socat das Kommando ausfuehrt. socat muss * dafuer auf dem Raspberry Pi installiert sein. * * Kommandos * * pause: echo '{"command": ["cycle", "pause"]}' | socat - /tmp/mpvsocket * seek: echo '{"command": ["seek", '30']}' | socat - /tmp/mpvsocket * * @author Ulrich Hilger */ public class SocketHandler extends CmdHandler { private static final Logger logger = Logger.getLogger(SocketHandler.class.getName()); public SocketHandler(String cmd) { super(cmd); } @Override protected String process(HttpExchange t, String params) { String antwort;// = null; try { StringBuilder kommando = new StringBuilder(); kommando.append(MPVPlayer.SOCK_PREFIX); kommando.append(cmd); logger.log(Level.FINE, "kommando: {0}", kommando.toString()); Process player_process = Runtime.getRuntime().exec(kommando.toString()); antwort = "Kommando ausgefuehrt: " + kommando; } catch (IOException ex) { antwort = "Fehler: " + ex.getMessage(); } return antwort; } }