App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
undisclosed
2023-01-08 e27ab178fa3a2f967823c1bfc81951086e15b642
commit | author | age
60719c 1 /*
933ccd 2     Calypso - Media Player Remote Control via HTTP for Raspberry Pi
U 3     Copyright (C) 2021-2023  Ulrich Hilger
60719c 4
U 5     This program is free software: you can redistribute it and/or modify
6     it under the terms of the GNU Affero General Public License as
7     published by the Free Software Foundation, either version 3 of the
8     License, or (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU Affero General Public License for more details.
14
15     You should have received a copy of the GNU Affero General Public License
16     along with this program.  If not, see <https://www.gnu.org/licenses/>.
17 */
8e2038 18
e27ab1 19 package de.uhilger.calypso;
8e2038 20
U 21 import java.util.logging.Logger;
22 import java.util.logging.Level;
23 import java.util.List;
24 import java.util.ArrayList;
25 import java.util.Iterator;
26
27 public class MeldeThread extends Thread {
28   
29   private static final Logger logger = Logger.getLogger(MeldeThread.class.getName());
30   
31   private Process omxplayer;
32   private int exitValue;
33   private List<ProzessLauscher> lauscher = new ArrayList<>();
34   private String meldeUrlStr;
35   
36   public void setProcess(Process p) {
37     this.omxplayer = p;
38   }
39   
40   public int getExitValue() {
41     return exitValue;
42   }
43   
44   public void setMeldeUrl(String meldeUrlStr) {
45     this.meldeUrlStr = meldeUrlStr;
46   }
47   
929228 48   /**
U 49    * ausfuehren des Threads
50    */
51   @Override
8e2038 52   public void run() {
U 53     try {
54       exitValue = omxplayer.waitFor();
55       prozessBeendetMelden();
929228 56     } catch(InterruptedException ex) {
8e2038 57       logger.log(Level.FINE, ex.getMessage(), ex);
U 58     } finally {
59       aufraeumen();
60     }
61   }
62   
63   private void aufraeumen() {
64     lauscher.clear();
65     lauscher = null;
66   }
67   
68   public void lauscherHinzufuegen(ProzessLauscher l) {
69     lauscher.add(l);
70   }
71   
72   public void lauscherEntfernen(ProzessLauscher l) {
73     lauscher.remove(l);
74   }
75   
76   private void prozessBeendetMelden() {
82594d 77     logger.log(Level.FINER, 
U 78               "Alle Lauscher werden ueber beendeten Abspielprozess verstaendigt..");
8e2038 79     Iterator<ProzessLauscher> i = lauscher.iterator();
U 80     while(i.hasNext()) {
81       ProzessLauscher l = i.next();
82       l.prozessBeendet(meldeUrlStr);
83     }
84   }
85   
86 }