diff -r dace11211dc9 -r 03cd058c33ba streamlet/protocol.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/streamlet/protocol.sh Sat Jan 11 18:06:58 2020 +0100 @@ -0,0 +1,38 @@ +#!/bin/bash + +read_nullbyte() { for v in "$@"; do export "$v"; read -r -d '' "$v"; done } + +# 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) + +nodes() { + cat messages.csv \ + | relpipe-in-csv \ + | relpipe-tr-cut '.*' 'message|sender' \ + | relpipe-tr-sed '.*' 'sender' 'executor' 'coral' \ + | relpipe-tr-sed '.*' 'sender' 'streamlet' 'gold2' \ + | relpipe-out-nullbyte \ + | while read_nullbyte message color; do echo "$message[style=\"filled,rounded\", fillcolor=$color];"; done + echo; +} + +edges() { + cat protocol.csv \ + | relpipe-in-csv \ + | relpipe-out-nullbyte \ + | while read_nullbyte from to label; do echo "$from -> $to [label=\" $label\"];"; done +} + +header() { + echo "digraph G { +#rankdir=LR; +node[shape=box, style=rounded, fontname=Ubuntu]; +start[shape=doublecircle]; +end[shape=doublecircle]; +"; +} + +footer() { + echo "}"; +} + +( header; nodes; edges; footer ) | dot -Tpdf > protocol.pdf