70 lines
2.0 KiB
Plaintext
70 lines
2.0 KiB
Plaintext
|
@startuml
|
||
|
package com.iluwatar.event.asynchronous {
|
||
|
class App {
|
||
|
- LOGGER : Logger {static}
|
||
|
+ PROP_FILE_NAME : String {static}
|
||
|
~ interactiveMode : boolean
|
||
|
+ App()
|
||
|
+ main(args : String[]) {static}
|
||
|
- processOption1(eventManager : EventManager, s : Scanner)
|
||
|
- processOption2(eventManager : EventManager, s : Scanner)
|
||
|
- processOption3(eventManager : EventManager, s : Scanner)
|
||
|
+ quickRun()
|
||
|
+ run()
|
||
|
+ runInteractiveMode()
|
||
|
+ setUp()
|
||
|
}
|
||
|
class Event {
|
||
|
- LOGGER : Logger {static}
|
||
|
- eventId : int
|
||
|
- eventListener : ThreadCompleteListener
|
||
|
- eventTime : int
|
||
|
- isComplete : boolean
|
||
|
- isSynchronous : boolean
|
||
|
- thread : Thread
|
||
|
+ Event(eventId : int, eventTime : int, isSynchronous : boolean)
|
||
|
+ addListener(listener : ThreadCompleteListener)
|
||
|
- completed()
|
||
|
+ isSynchronous() : boolean
|
||
|
+ removeListener(listener : ThreadCompleteListener)
|
||
|
+ run()
|
||
|
+ start()
|
||
|
+ status()
|
||
|
+ stop()
|
||
|
}
|
||
|
class EventManager {
|
||
|
- DOES_NOT_EXIST : String {static}
|
||
|
+ MAX_EVENT_TIME : int {static}
|
||
|
+ MAX_ID : int {static}
|
||
|
+ MAX_RUNNING_EVENTS : int {static}
|
||
|
+ MIN_ID : int {static}
|
||
|
- currentlyRunningSyncEvent : int
|
||
|
- eventPool : Map<Integer, Event>
|
||
|
- rand : Random
|
||
|
+ EventManager()
|
||
|
+ cancel(eventId : int)
|
||
|
+ completedEventHandler(eventId : int)
|
||
|
+ create(eventTime : int) : int
|
||
|
+ createAsync(eventTime : int) : int
|
||
|
- createEvent(eventTime : int, isSynchronous : boolean) : int
|
||
|
- generateId() : int
|
||
|
+ getEventPool() : Map<Integer, Event>
|
||
|
+ numOfCurrentlyRunningSyncEvent() : int
|
||
|
+ shutdown()
|
||
|
+ start(eventId : int)
|
||
|
+ status(eventId : int)
|
||
|
+ statusOfAllEvents()
|
||
|
}
|
||
|
interface IEvent {
|
||
|
+ start() {abstract}
|
||
|
+ status() {abstract}
|
||
|
+ stop() {abstract}
|
||
|
}
|
||
|
interface ThreadCompleteListener {
|
||
|
+ completedEventHandler(int) {abstract}
|
||
|
}
|
||
|
}
|
||
|
Event --> "-eventListener" ThreadCompleteListener
|
||
|
Event ..|> IEvent
|
||
|
EventManager ..|> ThreadCompleteListener
|
||
|
@enduml
|