From 80381c0d49c6b8f033df28806f79608a2a21a0a5 Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Sat, 1 Dec 2018 21:56:23 +0100 Subject: [PATCH] Fire events from LocalRecorder --- .../java/ctbrec/ui/CamrecApplication.java | 63 ++++++++++-------- .../resources/Oxygen-Im-Highlight-Msg.mp3 | Bin 0 -> 17664 bytes .../java/ctbrec/recorder/LocalRecorder.java | 27 ++++++++ 3 files changed, 62 insertions(+), 28 deletions(-) create mode 100644 client/src/main/resources/Oxygen-Im-Highlight-Msg.mp3 diff --git a/client/src/main/java/ctbrec/ui/CamrecApplication.java b/client/src/main/java/ctbrec/ui/CamrecApplication.java index 2b06e7d1..58cfb1ef 100644 --- a/client/src/main/java/ctbrec/ui/CamrecApplication.java +++ b/client/src/main/java/ctbrec/ui/CamrecApplication.java @@ -48,6 +48,7 @@ import javafx.scene.control.Alert; import javafx.scene.control.Tab; import javafx.scene.control.TabPane; import javafx.scene.image.Image; +import javafx.scene.media.AudioClip; import javafx.scene.paint.Color; import javafx.stage.Stage; import okhttp3.Request; @@ -93,14 +94,7 @@ public class CamrecApplication extends Application { createGui(primaryStage); checkForUpdates(); - new Thread(() -> { - try { - Thread.sleep(TimeUnit.SECONDS.toMillis(10)); - } catch (InterruptedException e) { - e.printStackTrace(); - } - Platform.runLater(() -> registerAlertSystem()); - }).start(); + registerAlertSystem(); } private void logEnvironment() { @@ -211,28 +205,41 @@ public class CamrecApplication extends Application { } private void registerAlertSystem() { - Notification.Notifier.setNotificationOwner(primaryStage); - EventBusHolder.BUS.register(new Object() { - @Subscribe - public void modelEvent(Map e) { - try { - if (Objects.equals("model.status", e.get("event"))) { - String status = (String) e.get("status"); - Model model = (Model) e.get("model"); - LOG.debug("Alert: {} is {}", model.getName(), status); - if (Objects.equals("online", status)) { - Platform.runLater(() -> { - notifier.notifyInfo("Model Online", model.getName() + " is now online"); - //AudioClip clip = new AudioClip("file:///tmp/Oxygen-Im-Highlight-Msg.mp3"); - //clip.play(); - }); + new Thread(() -> { + try { + // don't register before 1 minute has passed, because directly after + // the start of ctbrec, an event for every online model would be fired, + // which is annoying as f + Thread.sleep(TimeUnit.MINUTES.toMillis(1)); + } catch (InterruptedException e) { + e.printStackTrace(); + } + LOG.debug("Alert System registered"); + Platform.runLater(() -> { + Notification.Notifier.setNotificationOwner(primaryStage); + EventBusHolder.BUS.register(new Object() { + @Subscribe + public void modelEvent(Map e) { + LOG.debug("Alert: {}", e); + try { + if (Objects.equals("model.status", e.get("event"))) { + String status = (String) e.get("status"); + Model model = (Model) e.get("model"); + if (Objects.equals("online", status)) { + Platform.runLater(() -> { + notifier.notifyInfo("Model Online", model.getName() + " is now online"); + AudioClip clip = new AudioClip(getClass().getResource("/Oxygen-Im-Highlight-Msg.mp3").toString()); + clip.play(); + }); + } + } + } catch (Exception e1) { + e1.printStackTrace(); } } - } catch (Exception e1) { - e1.printStackTrace(); - } - } - }); + }); + }); + }).start(); } private void writeColorSchemeStyleSheet(Stage primaryStage) { diff --git a/client/src/main/resources/Oxygen-Im-Highlight-Msg.mp3 b/client/src/main/resources/Oxygen-Im-Highlight-Msg.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..ad3a8a54e4198e2d4bef1bd1adacdd0834626450 GIT binary patch literal 17664 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 literal 0 HcmV?d00001 diff --git a/common/src/main/java/ctbrec/recorder/LocalRecorder.java b/common/src/main/java/ctbrec/recorder/LocalRecorder.java index 4d71e58e..c7f5b897 100644 --- a/common/src/main/java/ctbrec/recorder/LocalRecorder.java +++ b/common/src/main/java/ctbrec/recorder/LocalRecorder.java @@ -36,6 +36,7 @@ import com.iheartradio.m3u8.ParseException; import com.iheartradio.m3u8.PlaylistException; import ctbrec.Config; +import ctbrec.EventBusHolder; import ctbrec.Model; import ctbrec.OS; import ctbrec.Recording; @@ -179,6 +180,7 @@ public class LocalRecorder implements Recorder { } } }.start(); + fireRecordingStateChanged(model, true); } private void stopRecordingProcess(Model model) { @@ -188,6 +190,7 @@ public class LocalRecorder implements Recorder { if(!Config.isServerMode()) { postprocess(download); } + fireRecordingStateChanged(model, false); } private void postprocess(Download download) { @@ -368,6 +371,7 @@ public class LocalRecorder implements Recorder { } else { postprocess(d); } + fireRecordingStateChanged(m, false); } } for (Model m : restart) { @@ -434,7 +438,11 @@ public class LocalRecorder implements Recorder { List models = getModelsRecording(); for (Model model : models) { try { + boolean wasOnline = model.isOnline(); boolean isOnline = model.isOnline(IGNORE_CACHE); + if(wasOnline != isOnline) { + fireModelOnlineStateChanged(model, isOnline); + } LOG.trace("Checking online state for {}: {}", model, (isOnline ? "online" : "offline")); if (isOnline && !isSuspended(model) && !recordingProcesses.containsKey(model)) { LOG.info("Model {}'s room back to public", model); @@ -468,6 +476,25 @@ public class LocalRecorder implements Recorder { } LOG.debug(getName() + " terminated"); } + + } + + private void fireModelOnlineStateChanged(Model model, boolean online) { + Map evt = new HashMap<>(); + evt.put("event", "model.status"); + evt.put("status", online ? "online" : "offline"); + evt.put("model", model); + EventBusHolder.BUS.post(evt); + LOG.debug("Event fired {}", evt); + } + + private void fireRecordingStateChanged(Model model, boolean recording) { + Map evt = new HashMap<>(); + evt.put("event", "recording.status"); + evt.put("status", recording ? "started" : "stopped"); + evt.put("model", model); + EventBusHolder.BUS.post(evt); + LOG.debug("Event fired {}", evt); } private class PostProcessingTrigger extends Thread {