Files
Ilkka Seppälä 730907d0d3 docs: Event-Based Asynchronous explanation + refactor (#2916)
* explation + refactor

* update logging
2024-04-14 13:10:39 +03:00

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 AsyncEvent {
- LOGGER : Logger {static}
- eventId : int
- eventListener : ThreadCompleteListener
- eventTime : int
- isComplete : AtomicBoolean
- synchronous : boolean
- thread : Thread
+ AsyncEvent(eventId : int, eventTime : int, synchronous : boolean)
+ addListener(listener : ThreadCompleteListener)
- completed()
+ isSynchronous() : boolean
+ removeListener()
+ run()
+ start()
+ status()
+ stop()
}
interface Event {
+ start() {abstract}
+ status() {abstract}
+ stop() {abstract}
}
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, AsyncEvent>
- rand : SecureRandom
+ 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, AsyncEvent>
+ numOfCurrentlyRunningSyncEvent() : int
+ shutdown()
+ start(eventId : int)
+ status(eventId : int)
+ statusOfAllEvents()
}
interface ThreadCompleteListener {
+ completedEventHandler(int) {abstract}
}
}
AsyncEvent --> "-eventListener" ThreadCompleteListener
AsyncEvent ..|> Event
EventManager ..|> ThreadCompleteListener
@enduml