@startuml plugin_connectivity
skinparam fixCircleLabelOverlapping true
skinparam SequenceLifeLineBorderColor #B0B0B0
skinparam SequenceDividerBorderColor Gray
skinparam SequenceGroupBorderColor Gray
skinparam sequenceMessageAlign Center
skinparam ArrowColor #404040
participant "ROS ActionClient" as client
participant ActorServer as server
participant ActorPlugin as plugin

note left of client: Protocol:
/note left of server: ros_action
/note left of plugin: MessageQueue


==Goal==
activate server
activate plugin

[-> client: create ActionClient
activate client

client -> server: goal request
server -->> client: goal response

alt goal accepted
server ->> plugin: set state and target
plugin -->> server: state change
== Feedback==
group opt par [abort of current action]
client->server: abort request
server->plugin: set state to Idle
server-->>client: abort response
end
loop until action is completed or aborted
plugin -->> server: feedback
server -->> client: feedback callback
end
==Result==
plugin -->> server: state change
server -->> client: result callback 
end
destroy client
@enduml