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