From dbfdc942d74d33fad669ed9936e4ba082787af51 Mon Sep 17 00:00:00 2001 From: Green Sky Date: Tue, 11 Oct 2022 14:13:56 +0200 Subject: [PATCH] send graph --- ft_send.dot | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 ft_send.dot diff --git a/ft_send.dot b/ft_send.dot new file mode 100644 index 0000000..ecbb2b7 --- /dev/null +++ b/ft_send.dot @@ -0,0 +1,65 @@ +digraph ft_send { + fontname="Helvetica,Arial,sans-serif" + node [fontname="Helvetica,Arial,sans-serif"] + edge [fontname="Helvetica,Arial,sans-serif"] + + //layout=fdp + //rankdir = LR + + start; + fail [shape=doublecircle]; + done [shape=doublecircle]; + + // peer offline (how) + start -> fail [label="peer offline"] + + subgraph cluster_init { + label="Send Init"; + + style=filled; + //color=lightgrey; + + + // if it fails + sent_init1 -> sent_init2 [label="send FT_INIT"] + + // if it fails again + sent_init2 -> sent_init3 [label="send FT_INIT"] + + } + + start -> sent_init1 [label="send FT_INIT"] + + // peer offline (how) + sent_init1 -> fail [label="peer offline"] + + // peer offline (how) + sent_init2 -> fail [label="peer offline"] + + // give up after 3. attempt + sent_init3 -> fail [label="no ack / peer offline"] + + // got an ack after an init + sent_init1 -> have_data [label="got init_ack"] + sent_init2 -> have_data [label="got init_ack"] + sent_init3 -> have_data [label="got init_ack"] + + subgraph cluster_data { + label="for each data chunk"; + style=filled; + //node [style=filled]; + + have_data -> data_awaiting_ack [label="send FT_DATA"]; + data_awaiting_ack -> data_wait_for_all [label="get FT_DATA_ACK"]; + data_awaiting_ack -> have_data [label="no FT_DATA_ACK"]; + + data_wait_for_all; + } + + // fail + have_data -> fail [label="peer offline"] + data_wait_for_all -> fail [label="peer offline"] + + data_wait_for_all -> done [label="all chunks acked"]; +} +