1+ @startuml
2+ package com . iluwatar . event . asynchronous {
3+ class Event {
4+ - eventId : int
5+ - eventListener : ThreadCompleteListener
6+ - eventTime : int
7+ - isComplete : boolean
8+ - isSynchronous : boolean
9+ - thread : Thread
10+ + Event(eventId : int, eventTime : int, isSynchronous : boolean)
11+ + addListener(listener : ThreadCompleteListener)
12+ - completed ()
13+ + isSynchronous () : boolean
14+ + removeListener(listener : ThreadCompleteListener)
15+ + run ()
16+ + start ()
17+ + status ()
18+ + stop ()
19+ }
20+ interface ThreadCompleteListener {
21+ + completedEventHandler (int ) {abstract }
22+ }
23+ class EventManager {
24+ + MAX_EVENT_TIME : int {static}
25+ + MAX_ID : int {static}
26+ + MAX_RUNNING_EVENTS : int {static}
27+ + MIN_ID : int {static}
28+ - currentlyRunningSyncEvent : int
29+ - eventPool : Map<Integer, Event>
30+ - rand : Random
31+ + EventManager ()
32+ + cancel(eventId : int)
33+ + completedEventHandler(eventId : int)
34+ + create(eventTime : int) : int
35+ + createAsync(eventTime : int) : int
36+ - createEvent(eventTime : int, isSynchronous : boolean) : int
37+ - generateId () : int
38+ + getEventPool() : Map<Integer, Event>
39+ + numOfCurrentlyRunningSyncEvent () : int
40+ + shutdown ()
41+ + start(eventId : int)
42+ + status(eventId : int)
43+ + statusOfAllEvents ()
44+ }
45+ class App {
46+ + PROP_FILE_NAME : String {static}
47+ ~ interactiveMode : boolean
48+ + App ()
49+ + main(args : String[]) {static}
50+ + quickRun ()
51+ + run ()
52+ + runInteractiveMode ()
53+ + setUp ()
54+ }
55+ interface IEvent {
56+ + start () {abstract }
57+ + status () {abstract }
58+ + stop () {abstract }
59+ }
60+ }
61+ Event --> "- eventListener " ThreadCompleteListener
62+ EventManager --+ Map
63+ Event ..|> IEvent
64+ EventManager ..|> ThreadCompleteListener
65+ @enduml
0 commit comments