@startuml
database DB as db

box "Superviseur COAP"
participant "Optimiseur" as opti
participant "Réseau de\nneurrones" as NN
participant "Buffer\nd'expérience" as buffer
participant "Statisticien" as stat
end box

box "Client COAP"
boundary "Handle CoAP" as h_coap
queue "File d'attente" as file
participant "Gestionaire des\nretransmitions" as gest
boundary "UDP socket" as udp
end box

boundary "reseau de\ncapteurs" as capt

-> db ++: déclanchement

db -> h_coap ++: requète : URI
h_coap -> file : requète : URI
hnote over file
On attend qu'il n'y ais plus
de message non-aquitée pour
ce capteur
endnote
file -> gest ++: requète : URI
group while [non réussite]
    gest -> udp ++: CON[akc_token]\nGET/URI(req_token)
    udp -> capt ++: CON[akc_token]\nGET/URI(req_token)
    alt réussite
        return AKC[akc_token]\nval(req_token+1)
        return AKC[akc_token]\nval(req_token+1)

    else timeout
        gest-> gest : doublement RTO
    end
end
gest -> stat : n_retransmition, RTT
gest -> h_coap --: réponse : val
return réponse : val
deactivate db


@enduml