| digraph g |
| { |
| graph |
| [ |
| nodesep="0.2" |
| ]; |
| |
| edge |
| [ |
| fontname="Helvetica", |
| fontsize=10, |
| labelfontname="Helvetica", |
| labelfontsize=10 |
| ]; |
| |
| node |
| [ |
| fontname="Helvetica", |
| fontsize=10, |
| shape=box |
| ]; |
| |
| edge |
| [ |
| arrowhead="open" |
| ] |
| |
| // Program elements. |
| { |
| operating_system [ label="Operating System", shape=ellipse ]; |
| io_service [ label="io_service" ]; |
| io_object [ label="I/O Object\ne.g. socket" ]; |
| your_program [ label="Your Program" ]; |
| your_completion_handler [ label="Your Completion Handler" ]; |
| } |
| |
| // Owning relationships. |
| { |
| edge [ arrowtail="diamond" ]; |
| your_program:e -> your_completion_handler:n; |
| your_program:w -> io_object:nw; |
| your_program:se -> io_service:ne; |
| } |
| |
| // Non-owning relationships; |
| { |
| io_object:sw -> io_service:w; |
| } |
| |
| // Visible actions. |
| { |
| edge [ style="dashed", color="#808080" ]; |
| |
| // Forward actions. |
| { |
| your_program:sw -> io_object:n [ label="1" ]; |
| io_object:s -> io_service:nw [ label="2" ]; |
| io_service:s -> operating_system:n [ label="3" ]; |
| } |
| } |
| |
| // Invisible actions. |
| { |
| edge [ style="invis" ]; |
| |
| // Forward actions. |
| { |
| your_program:s -> io_service:n [ label="5" ]; |
| } |
| |
| // Reverse actions. |
| { |
| edge [ arrowhead="none", arrowtail="open" ]; |
| //io_service:s -> operating_system:n [ label="4" ]; |
| your_completion_handler:s -> io_service:e [ label="6" ]; |
| } |
| } |
| } |