sync_op.dot 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. digraph g
  2. {
  3. graph
  4. [
  5. nodesep="0.6"
  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. }
  31. // Owning relationships.
  32. {
  33. edge [ arrowtail="diamond" ];
  34. your_program:w -> io_object:nw;
  35. your_program:se -> io_context:ne;
  36. }
  37. // Non-owning relationships;
  38. {
  39. io_object:sw -> io_context:w;
  40. }
  41. // Actions.
  42. {
  43. edge [ style="dashed", color="#808080" ];
  44. // Forward actions.
  45. {
  46. your_program:sw -> io_object:n [ label="1" ];
  47. io_object:s -> io_context:nw [ label="2" ];
  48. io_context:sw -> operating_system:nw [ label="3" ];
  49. }
  50. // Reverse actions.
  51. {
  52. edge [ arrowhead="none", arrowtail="open" ];
  53. io_context:se -> operating_system:ne [ label="4" ];
  54. io_object:se -> io_context:n [ label="5" ];
  55. your_program:s -> io_object:ne [ label="6" ];
  56. }
  57. }
  58. }