Skip to content

Instantly share code, notes, and snippets.

@N-Coder
Created March 14, 2018 19:11
Show Gist options
  • Save N-Coder/301485f598496aa307fa93dbc7bec490 to your computer and use it in GitHub Desktop.
Save N-Coder/301485f598496aa307fa93dbc7bec490 to your computer and use it in GitHub Desktop.
blockdiag {
orientation = portrait;
begin[shape=beginpoint, description="on_request_start"];
redirect[description="on_request_redirect"];
end[shape=endpoint, description="on_request_end"];
exception[shape=flowchart.terminator, description="on_request_exception"];
//acquire_connection[description="Connection acquiring"];
group header_timeout {
label = "8. header_timeout";
color = "#FFFF00";
shape = line;
style = dashed;
headers_received;
headers_sent;
chunk_sent[description="on_request_chunk_sent"];
}
chunk_received[description="on_response_chunk_received"];
begin -> begin_acquire_con;
end_acquire_con -> headers_sent;
headers_sent -> headers_received;
headers_sent -> chunk_sent;
chunk_sent -> chunk_sent [thick];
chunk_sent -> headers_received;
headers_received -> chunk_received;
chunk_received -> chunk_received;
chunk_received -> end [thick];
headers_received -> redirect;
headers_received -> end [thick];
redirect -> headers_sent;
chunk_received -> exception;
chunk_sent -> exception;
headers_sent -> exception;
group acquire_con {
label = "acquire_con (6. timeout)";
color = "#77FF77";
begin_acquire_con[shape=beginpoint];
end_acquire_con[shape=endpoint];
exception_acquire_con[shape=flowchart.terminator, description="Exception raised"];
group queued_timeout {
label = "2. queued_timeout";
color = "#FF0000";
shape = line;
style = dashed;
queued_start[description="on_connection_queued_start"];
queued_end[description="on_connection_queued_end"];
}
group con_create_timeout {
label = "3. con_create_timeout";
color = "#FF0000";
shape = line;
style = dashed;
create_start[description="on_connection_create_start"];
create_end[description="on_connection_create_end"];
//resolve_dns[description="DNS resolving"];
group sock_connect_timeout {
label = "5. sock_connect_timeout";
color = "#FFFF00";
shape = line;
style = dashed;
sock_connect[description="Connection establishment"];
}
group resolve_dns {
label = "resolve_dns (4. timeout)";
color = "#7777FF";
begin_resolve_dns[shape=beginpoint];
end_resolve_dns[shape=endpoint];
exception_resolve_dns[shape=flowchart.terminator, description="Exception raised"];
resolve_start[description="on_dns_resolvehost_start"];
resolve_end[description="on_dns_resolvehost_end"];
cache_hit[description="on_dns_cache_hit"];
cache_miss[description="on_dns_cache_miss"];
begin_resolve_dns -> cache_hit -> end_resolve_dns;
begin_resolve_dns -> cache_miss -> resolve_start;
resolve_start -> resolve_end -> end_resolve_dns;
resolve_start -> exception_resolve_dns;
}
}
reuseconn[description="on_connection_reuseconn"];
begin_acquire_con -> reuseconn;
begin_acquire_con -> create_start [thick];
create_start -> begin_resolve_dns;
end_resolve_dns -> exception_acquire_con;
end_resolve_dns -> sock_connect;
sock_connect -> exception_acquire_con;
sock_connect -> create_end -> end_acquire_con;
begin_acquire_con -> queued_start;
queued_start -> queued_end;
queued_end -> reuseconn;
queued_end -> create_start;
reuseconn -> end_acquire_con;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment