pools.dot 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. digraph SocketPools {
  2. subgraph cluster_legend {
  3. label="Legend";
  4. ## The following legend is an attempt to match UML notation,
  5. ## except for template_class and Factory->object, which are
  6. ## invented for this diagram.
  7. BaseClass;
  8. SubClass [label="Derived Class"];
  9. Whole;
  10. Part;
  11. A;
  12. B;
  13. Interface [label="Interface / ABC", style=dashed];
  14. template_class [shape=diamond]; # Link will name parameter(s)
  15. SubClass -> BaseClass [arrowhead="empty"];
  16. SubClass -> Interface [arrowhead="empty", style=dashed];
  17. Part -> Whole [arrowhead="diamond", label="ownership"];
  18. Part -> Whole [arrowhead="odiamond", label="pointer"];
  19. RefCountedPart -> Whole [arrowhead="diamond", color=red,
  20. label="partial\nownership"];
  21. A -> B [arrowhead="none", headlabel="?..?", taillabel="?..?",
  22. label="association"];
  23. // Often a "subgraph { rank=same; .. }" is used to wrap the
  24. // below to make the generative relationship distinctive
  25. // from the other class relationships.
  26. Factory -> object [arrowhead=veevee];
  27. };
  28. ClientSocketPoolBase [shape=diamond];
  29. ClientSocketPoolBaseHelper;
  30. ClientSocketPoolBaseHelper_ConnectJobFactory
  31. [style=dotted, label="ClientSocketPoolBaseHelper::\nConnectJobFactory"];
  32. ClientSocketPoolBase_ConnectJobFactory
  33. [style=dotted, shape=diamond,
  34. label="ClientSocketPoolBase::\nConnectJobFactory"];
  35. ClientSocketPoolBase_ConnectJobFactoryAdaptor
  36. [shape=diamond,
  37. label="ClientSocketPoolBase::\nConnectJobFactoryAdaptor"];
  38. HigherLayeredPool [style=dotted];
  39. LowerLayeredPool [style=dotted];
  40. ClientSocketPool [style=dotted];
  41. ConnectJob [style=dashed];
  42. ConnectJob_Delegate [style=dotted, label="ConnectJob::Delegate"];
  43. ClientSocketFactory [style=dotted];
  44. DefaultClientSocketFactory;
  45. TCPClientSocket;
  46. TransportClientSocket [style=dotted]
  47. StreamSocket [style=dotted]
  48. Socket;
  49. TransportSocketParams;
  50. TransportConnectJobHelper;
  51. TransportConnectJobFactory;
  52. TransportConnectJob;
  53. TransportClientSocketPool -> ClientSocketPool [arrowhead=empty];
  54. ClientSocketPool -> LowerLayeredPool [arrowhead=empty];
  55. ClientSocketPoolBaseHelper -> ConnectJob_Delegate [arrowhead=empty];
  56. TransportConnectJobFactory -> ClientSocketPoolBase_ConnectJobFactory
  57. [arrowhead=empty, label="TransportSocketParams"];
  58. ClientSocketPoolBase_ConnectJobFactoryAdaptor ->
  59. ClientSocketPoolBaseHelper_ConnectJobFactory
  60. [arrowhead=empty, arrowtail=none];
  61. TransportConnectJob -> ConnectJob [arrowhead=empty];
  62. DefaultClientSocketFactory -> ClientSocketFactory [arrowhead=empty];
  63. StreamSocket -> Socket [arrowhead=empty]
  64. TCPClientSocket -> TransportClientSocket [arrowhead=empty]
  65. TransportClientSocket -> StreamSocket [arrowhead=empty]
  66. ClientSocketPoolBaseHelper -> ClientSocketPoolBase [arrowhead=diamond];
  67. ClientSocketPoolBase -> TransportClientSocketPool
  68. [arrowhead=diamond, label="TransportSocketParams"];
  69. ClientSocketPoolBase_ConnectJobFactory ->
  70. ClientSocketPoolBase_ConnectJobFactoryAdaptor [arrowhead=diamond];
  71. ClientSocketPoolBaseHelper_ConnectJobFactory ->
  72. ClientSocketPoolBaseHelper [arrowhead=diamond];
  73. TransportConnectJobHelper -> TransportConnectJob [arrowhead=diamond];
  74. TransportSocketParams -> TransportConnectJobHelper
  75. [arrowhead=diamond, color=red];
  76. ConnectJob -> ConnectJob_Delegate
  77. [dir=back, arrowhead=none, arrowtail=odiamond];
  78. HigherLayeredPool -> ClientSocketPoolBaseHelper
  79. [arrowhead=odiamond, taillabel="*"];
  80. LowerLayeredPool -> ClientSocketPoolBaseHelper
  81. [arrowhead=odiamond, taillabel="*"];
  82. ClientSocketFactory -> ClientSocketPoolBaseHelper [arrowhead=odiamond];
  83. subgraph {
  84. rank=same;
  85. ClientSocketPoolBaseHelper_ConnectJobFactory -> ConnectJob
  86. [arrowhead=veevee];
  87. }
  88. ClientSocketPoolBase_ConnectJobFactory -> ConnectJob [arrowhead=veevee];
  89. ClientSocketFactory -> TCPClientSocket [arrowhead=veevee]
  90. }