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