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;
|
}
|
}
|