asio/doc/overview/async_op1.dot
2019-12-05 00:34:39 +11:00

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="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:sw -> io_object:n [ label="1" ];
io_object:s -> io_context:nw [ label="2" ];
io_context:s -> operating_system:n [ label="3" ];
}
}
// Invisible actions.
{
edge [ style="invis" ];
// 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" ];
}
}
}