@startuml
'https://plantuml.com/sequence-diagram

autonumber

@startuml
participant Main
participant Inputhandler
participant PersonBuffer
participant Distributer
participant RequestList
participant Elevator
participant Strategy

Main -> Elevator: start
Main -> Inputhandler: start
Inputhandler -> PersonBuffer: add request

PersonBuffer -> Distributer: awake
Distributer -> PersonBuffer: get request
PersonBuffer --> Distributer: return request
Distributer -> RequestList: distribute request

RequestList -> Elevator: awake
Elevator -> Strategy: get next strategy
Strategy --> Elevator: return next strategy
Elevator -> RequestList: get next request
RequestList --> Elevator: return next request
Elevator -> Elevator: do action

Inputhandler -> Elevator: reset request
Elevator -> Elevator: reset begin
Elevator -> PersonBuffer: pop out request
PersonBuffer -> Distributer: awake
Distributer -> PersonBuffer: get request
PersonBuffer --> Distributer: return request
Elevator --> Distributer: get a copy
Distributer -> Distributer: calculate cost
Distributer -> RequestList: distribute request
Elevator -> Elevator: reset end


Inputhandler -> RequestList: end signal
RequestList -> Elevator: end signal

'Alice -> Bob: Authentication Request
'Bob --> Alice: Authentication Response
'
'Alice -> Bob: Another authentication Request
'Alice <-- Bob: another authentication Response
@enduml