streamlet/protocol.sh
branchv_0
changeset 3 03cd058c33ba
parent 0 4d5b3eda7be1
equal deleted inserted replaced
2:dace11211dc9 3:03cd058c33ba
       
     1 #!/bin/bash
       
     2 
       
     3 read_nullbyte() { for v in "$@"; do export "$v"; read -r -d '' "$v"; done }
       
     4 
       
     5 # Warning: this script is unsafe and certain characters (which are perfectly legal in CSV values) might cause invalid DOT (GraphViz) streams. (you have been warned)
       
     6 
       
     7 nodes() {
       
     8 	cat messages.csv \
       
     9 		| relpipe-in-csv \
       
    10 		| relpipe-tr-cut '.*' 'message|sender' \
       
    11 		| relpipe-tr-sed '.*' 'sender' 'executor' 'coral' \
       
    12 		| relpipe-tr-sed '.*' 'sender' 'streamlet'  'gold2' \
       
    13 		| relpipe-out-nullbyte \
       
    14 		| while read_nullbyte message color; do echo "$message[style=\"filled,rounded\", fillcolor=$color];"; done
       
    15 	echo;
       
    16 }
       
    17 
       
    18 edges() {
       
    19 	cat protocol.csv \
       
    20 		| relpipe-in-csv \
       
    21 		| relpipe-out-nullbyte \
       
    22 		| while read_nullbyte from to label; do echo "$from -> $to [label=\"  $label\"];"; done
       
    23 }
       
    24 
       
    25 header() {
       
    26 	echo "digraph G {
       
    27 #rankdir=LR;
       
    28 node[shape=box, style=rounded, fontname=Ubuntu];
       
    29 start[shape=doublecircle];
       
    30 end[shape=doublecircle];
       
    31 ";
       
    32 }
       
    33 
       
    34 footer() {
       
    35 	echo "}";
       
    36 }
       
    37 
       
    38 ( header; nodes; edges; footer ) | dot -Tpdf > protocol.pdf