From 152b2762c3710902e1a08af7ffdca2b8d44c5388 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mih=C3=A1ly=20Kuprivecz?= Date: Sat, 22 Apr 2017 17:16:38 +0200 Subject: [PATCH] read.me and the diagram is added --- event-queue/README.md | 29 ++++++++++++++ event-queue/etc/event-queue.urm.puml | 26 +++++++++++++ event-queue/etc/model.png | Bin 0 -> 10815 bytes event-queue/model.png | Bin 0 -> 10815 bytes event-queue/model.ucls | 36 ++++++++++++++++++ .../java/com/iluwatar/event/queue/Audio.java | 9 +---- 6 files changed, 93 insertions(+), 7 deletions(-) create mode 100644 event-queue/etc/event-queue.urm.puml create mode 100644 event-queue/etc/model.png create mode 100644 event-queue/model.png create mode 100644 event-queue/model.ucls diff --git a/event-queue/README.md b/event-queue/README.md index e69de29bb..2129f8c69 100644 --- a/event-queue/README.md +++ b/event-queue/README.md @@ -0,0 +1,29 @@ +--- +layout: pattern +title: Event Queue +folder: event-queue +permalink: /patterns/event-queue/ +categories: Concurrency +tags: + - Java + - Difficulty Intermediate + - Queue +--- + +## Intent +Event Queue is a good pattern if You have a limited accesibility resource (for example: +Audio or Database), but You need to handle all the requests that want to use that. +It puts all the requests in a queue and process them asynchronously. +Gives the resource for the event when it is the next in the queue and in same time +removes it from the queue. + +![alt text](./etc/model.png "Event Queue") + +## Applicability +Use the Event Queue pattern when + +* You have a limited accesibility resource and the asynchronous process is acceptable to reach that + +## Credits + +* [Mihály Kuprivecz - Event Queue] diff --git a/event-queue/etc/event-queue.urm.puml b/event-queue/etc/event-queue.urm.puml new file mode 100644 index 000000000..e2aabee31 --- /dev/null +++ b/event-queue/etc/event-queue.urm.puml @@ -0,0 +1,26 @@ +@startuml +package com.iluwatar.event.queue { + class App { + + App() + + getAudioStream(filePath : String) : AudioInputStream {static} + + main(args : String[]) {static} + } + class Audio { + - MAX_PENDING : int {static} + - headIndex : int {static} + - pendingAudio : PlayMessage[] {static} + - tailIndex : int {static} + - updateThread : Thread {static} + + Audio() + + init() {static} + + playSound(stream : AudioInputStream, volume : float) {static} + + stopService() {static} + + update() {static} + } + class PlayMessage { + ~ stream : AudioInputStream + ~ volume : float + + PlayMessage() + } +} +@enduml \ No newline at end of file diff --git a/event-queue/etc/model.png b/event-queue/etc/model.png new file mode 100644 index 0000000000000000000000000000000000000000..8222dccbfabf674306accfe10e990d3adb12b43f GIT binary patch literal 10815 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 DNMN3U literal 0 HcmV?d00001 diff --git a/event-queue/model.png b/event-queue/model.png new file mode 100644 index 0000000000000000000000000000000000000000..8222dccbfabf674306accfe10e990d3adb12b43f GIT binary patch literal 10815 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 DNMN3U literal 0 HcmV?d00001 diff --git a/event-queue/model.ucls b/event-queue/model.ucls new file mode 100644 index 000000000..ed923014b --- /dev/null +++ b/event-queue/model.ucls @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java index a9f0c5a67..e00cd375a 100644 --- a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java +++ b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java @@ -47,10 +47,6 @@ public class Audio { private static PlayMessage[] pendingAudio = new PlayMessage[MAX_PENDING]; - public static boolean isServiceRunning() { - return updateThread.isAlive(); - } - /** * This method stops the Update Method's thread. */ @@ -117,6 +113,8 @@ public class Audio { try { clip = AudioSystem.getClip(); clip.open(pendingAudio[headIndex].stream); + clip.start(); + headIndex++; } catch (LineUnavailableException e) { System.err.println("Error occoured while loading the audio: The line is unavailable"); e.printStackTrace(); @@ -124,8 +122,5 @@ public class Audio { System.err.println("Input/Output error while loading the audio"); e.printStackTrace(); } - clip.start(); - - headIndex++; } }