digraph positioner_io { layout=dot size="8,4" margin=0 ratio=fill rankdir=LR edge [dir=right] /* Programs */ node [style=filled, shape=box, fillcolor="#9090fa"] positioner [label="OwlPS Positioner"] client [label="OwlPS Client"] udp_http [label="OwlPS UDP-to-HTTP"] socket_adapter [label="EvAAL SocketAdapter", fillcolor="#cccccc"] node [shape=ellipse, fillcolor="#7ec0ea"] /* Inputs */ "CSV file" -> positioner "UDP socket" -> positioner /* Outputs */ positioner -> "Standard output" csv_file [label="CSV file"] positioner -> csv_file udp_socket [label="UDP socket"] positioner -> udp_socket udp_socket -> client udp_socket -> udp_http tcp_evaal [label="EvAAL TCP socket"] positioner -> tcp_evaal tcp_evaal -> socket_adapter }