async_op1.dot 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. digraph g
  2. {
  3. graph
  4. [
  5. nodesep="0.2"
  6. ];
  7. edge
  8. [
  9. fontname="Helvetica",
  10. fontsize=10,
  11. labelfontname="Helvetica",
  12. labelfontsize=10
  13. ];
  14. node
  15. [
  16. fontname="Helvetica",
  17. fontsize=10,
  18. shape=box
  19. ];
  20. edge
  21. [
  22. arrowhead="open"
  23. ]
  24. // Program elements.
  25. {
  26. operating_system [ label="Operating System", shape=ellipse ];
  27. io_context [ label="io_context" ];
  28. io_object [ label="I/O Object\ne.g. socket" ];
  29. your_program [ label="Your Program" ];
  30. your_completion_handler [ label="Your Completion Handler" ];
  31. }
  32. // Owning relationships.
  33. {
  34. edge [ arrowtail="diamond" ];
  35. your_program:e -> your_completion_handler:n;
  36. your_program:w -> io_object:nw;
  37. your_program:se -> io_context:ne;
  38. }
  39. // Non-owning relationships;
  40. {
  41. io_object:sw -> io_context:w;
  42. }
  43. // Visible actions.
  44. {
  45. edge [ style="dashed", color="#808080" ];
  46. // Forward actions.
  47. {
  48. your_program:sw -> io_object:n [ label="1" ];
  49. io_object:s -> io_context:nw [ label="2" ];
  50. io_context:s -> operating_system:n [ label="3" ];
  51. }
  52. }
  53. // Invisible actions.
  54. {
  55. edge [ style="invis" ];
  56. // Forward actions.
  57. {
  58. your_program:s -> io_context:n [ label="5" ];
  59. }
  60. // Reverse actions.
  61. {
  62. edge [ arrowhead="none", arrowtail="open" ];
  63. //io_context:s -> operating_system:n [ label="4" ];
  64. your_completion_handler:s -> io_context:e [ label="6" ];
  65. }
  66. }
  67. }