/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package de.uhilger.calypso.handler;
import com.sun.net.httpserver.HttpExchange;
import de.uhilger.calypso.ProzessLauscher;
import java.util.Map;
/**
 *
 * @author ulrich
 */
public interface Player extends ProzessLauscher {
  /**
   * Einen Prozess zum Abspielen mit dem omxplayer starten
   * @param urlStr  URL der Quelle, die abgespielt werden soll
   * @param token
   * @return Antwort des Servers
   */
  /*
  public String abspielen(String urlStr, String token) {
  return abspielenMitParametern(urlStr, null, token);
  }
   */
  /*
  public String abspielenMitRueckmeldung(String urlStr, String meldeUrlStr, String token) {
  return abspielenMitParameternUndRueckmeldung(urlStr, null, meldeUrlStr, token);
  }
   */
  /**
   * Einen Prozess zum Abspielen mit dem omxplayer starten
   * und Parameter uebergeben.Moegliche Parameter fuer das Abspielen mit dem omxplayer
  beschreibt die Seite
  Aufstellung der Parameter.Die Zeichenkette parameter enthaelt Eintraege wie z.B.
   * App.OPT_LOCAL_AUDIO oder App.OPT_HDMI_AUDIO.
  Mehrere Parameter werden mit App.BLANK getrennt.
   * @param urlStr  der URL der Quelle, die abgespielt werden soll
   * @param parameter  die Parameter, die vom omxplayer angewendet werden sollen
   * @param token
   * @return Antwort des Servers
   */
  /*
  public String abspielenMitParametern(String urlStr, String parameter, String token) {
  return abspielenMitParameternUndRueckmeldung(urlStr, parameter, null, token);
  }
   */
  String abspielen(String urlStr, String parameter, String meldeUrlStr, String token);
  /**
   * Dem laufenden Abspielprozess ein Kommando uebermitteln
   * @param k  das Kommando laut
   * Liste der Kommandos
   * @return die Antwort des Servers
   */
  String kommando(String k);
  
  StringBuilder buildParams(HttpExchange t, Map m);
  
  String getParam(Map map, String key);
  /* ------ Implementierung ProzessLauscher ----------------- */
  void prozessBeendet(String meldeUrlStr);
  /**
   * Einen eventuell laufenden Abspielprozess beenden und den
   * Servlet-Kontext bereinigen.Diese Methode kann auch verwendet werden, wenn es beim normalen
  Abspielen zu Fehlern kommt und womoeglich der Servlet-Kontext noch
  eine Referenz zu einem Abspielprozess enthaelt, die nicht mehr
  aktuell ist.
   *
   * Mit der Methode tilgen kann man eine solche Referenz
  entfernen und gibt so das Objekt wieder frei fuer die Ausfuehrung
  weiterer Kommandos.
   *
   * @return die Antwort des Servers
   */
  String tilgen();
  
}