79 lines
1.5 KiB
Plaintext
79 lines
1.5 KiB
Plaintext
|
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_context [ label="I/O Execution Context\ne.g. io_context" ];
|
||
|
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_context:ne;
|
||
|
}
|
||
|
|
||
|
// Non-owning relationships;
|
||
|
{
|
||
|
io_object:sw -> io_context:w;
|
||
|
}
|
||
|
|
||
|
// Visible actions.
|
||
|
{
|
||
|
edge [ style="dashed", color="#808080" ];
|
||
|
|
||
|
// Forward actions.
|
||
|
{
|
||
|
your_program:s -> io_context:n [ label="5" ];
|
||
|
}
|
||
|
|
||
|
// Reverse actions.
|
||
|
{
|
||
|
edge [ arrowhead="none", arrowtail="open" ];
|
||
|
io_context:s -> operating_system:n [ label="4" ];
|
||
|
your_completion_handler:s -> io_context:e [ label="6" ];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Invisible actions.
|
||
|
{
|
||
|
edge [ style="invis" ];
|
||
|
|
||
|
// Forward actions.
|
||
|
{
|
||
|
your_program:sw -> io_object:n [ label="1" ];
|
||
|
io_object:s -> io_context:nw [ label="2" ];
|
||
|
//io_context:s -> operating_system:n [ label="3" ];
|
||
|
}
|
||
|
}
|
||
|
}
|