Merge lp:~pedronis/ubuntu-push/protocol-diagrams into lp:ubuntu-push

Proposed by Samuele Pedroni
Status: Merged
Approved by: Samuele Pedroni
Approved revision: 8
Merged at revision: 7
Proposed branch: lp:~pedronis/ubuntu-push/protocol-diagrams
Merge into: lp:ubuntu-push
Diff against target: 311 lines (+282/-1)
5 files modified
Makefile (+6/-1)
protocol/state-diag-client.gv (+16/-0)
protocol/state-diag-client.svg (+98/-0)
protocol/state-diag-session.gv (+20/-0)
protocol/state-diag-session.svg (+142/-0)
To merge this branch: bzr merge lp:~pedronis/ubuntu-push/protocol-diagrams
Reviewer Review Type Date Requested Status
John Lenton (community) Approve
Review via email: mp+201989@code.launchpad.net

Commit message

protocol diagrams using graphviz

Description of the change

protocol diagrams using graphviz

To post a comment you must log in.
8. By Samuele Pedroni

don't mix spaces and tabs

Revision history for this message
John Lenton (chipaca) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'Makefile'
2--- Makefile 2014-01-15 11:12:05 +0000
3+++ Makefile 2014-01-16 20:07:29 +0000
4@@ -44,5 +44,10 @@
5 check-format:
6 scripts/check_fmt $(PROJECT)
7
8+protocol-diagrams: protocol/state-diag-client.svg protocol/state-diag-session.svg
9+%.svg: %.gv
10+ # requires graphviz installed
11+ dot -Tsvg $< > $@
12+
13 .PHONY: bootstrap check check-race format check-format coverage-summary \
14- coverage-html
15+ coverage-html protocol-diagrams
16
17=== added file 'protocol/state-diag-client.gv'
18--- protocol/state-diag-client.gv 1970-01-01 00:00:00 +0000
19+++ protocol/state-diag-client.gv 2014-01-16 20:07:29 +0000
20@@ -0,0 +1,16 @@
21+digraph state_diagram_client {
22+ label = "State diagram for client";
23+ size="12,6";
24+ rankdir=LR;
25+ node [shape = doublecircle]; pingTimeout;
26+ node [shape = circle];
27+ start1 -> start2 [ label = "Write wire version" ];
28+ start2 -> start3 [ label = "Write CONNECT" ];
29+ start3 -> loop [ label = "Read CONNACK" ];
30+ loop -> pong [ label = "Read PING" ];
31+ loop -> broadcast [label = "Read BROADCAST"];
32+ pong -> loop [label = "Write PONG"];
33+ broadcast -> loop [label = "Write ACK"];
34+ loop -> pingTimeout [
35+ label = "Elapsed ping interval + exchange interval"];
36+}
37
38=== added file 'protocol/state-diag-client.svg'
39--- protocol/state-diag-client.svg 1970-01-01 00:00:00 +0000
40+++ protocol/state-diag-client.svg 2014-01-16 20:07:29 +0000
41@@ -0,0 +1,98 @@
42+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
43+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
44+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
45+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
46+ -->
47+<!-- Title: state_diagram_client Pages: 1 -->
48+<svg width="864pt" height="279pt"
49+ viewBox="0.00 0.00 864.00 278.89" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
50+<g id="graph1" class="graph" transform="scale(0.683544 0.683544) rotate(0) translate(4 404)">
51+<title>state_diagram_client</title>
52+<polygon fill="white" stroke="white" points="-4,5 -4,-404 1261,-404 1261,5 -4,5"/>
53+<text text-anchor="middle" x="628" y="-9.4" font-family="Times Roman,serif" font-size="14.00">State diagram for client</text>
54+<!-- pingTimeout -->
55+<g id="node1" class="node"><title>pingTimeout</title>
56+<ellipse fill="none" stroke="black" cx="1180" cy="-324" rx="72.1249" ry="72.1249"/>
57+<ellipse fill="none" stroke="black" cx="1180" cy="-324" rx="76.1249" ry="76.1249"/>
58+<text text-anchor="middle" x="1180" y="-320.4" font-family="Times Roman,serif" font-size="14.00">pingTimeout</text>
59+</g>
60+<!-- start1 -->
61+<g id="node2" class="node"><title>start1</title>
62+<ellipse fill="none" stroke="black" cx="42" cy="-166" rx="41.2167" ry="41.7193"/>
63+<text text-anchor="middle" x="42" y="-162.4" font-family="Times Roman,serif" font-size="14.00">start1</text>
64+</g>
65+<!-- start2 -->
66+<g id="node4" class="node"><title>start2</title>
67+<ellipse fill="none" stroke="black" cx="292" cy="-166" rx="41.2167" ry="41.7193"/>
68+<text text-anchor="middle" x="292" y="-162.4" font-family="Times Roman,serif" font-size="14.00">start2</text>
69+</g>
70+<!-- start1&#45;&gt;start2 -->
71+<g id="edge2" class="edge"><title>start1&#45;&gt;start2</title>
72+<path fill="none" stroke="black" d="M83.5631,-166C126.547,-166 193.757,-166 240.181,-166"/>
73+<polygon fill="black" stroke="black" points="240.338,-169.5 250.338,-166 240.338,-162.5 240.338,-169.5"/>
74+<text text-anchor="middle" x="167" y="-171.4" font-family="Times Roman,serif" font-size="14.00">Write wire version</text>
75+</g>
76+<!-- start3 -->
77+<g id="node6" class="node"><title>start3</title>
78+<ellipse fill="none" stroke="black" cx="526" cy="-166" rx="41.2167" ry="41.7193"/>
79+<text text-anchor="middle" x="526" y="-162.4" font-family="Times Roman,serif" font-size="14.00">start3</text>
80+</g>
81+<!-- start2&#45;&gt;start3 -->
82+<g id="edge4" class="edge"><title>start2&#45;&gt;start3</title>
83+<path fill="none" stroke="black" d="M333.565,-166C372.875,-166 431.992,-166 474.321,-166"/>
84+<polygon fill="black" stroke="black" points="474.429,-169.5 484.429,-166 474.429,-162.5 474.429,-169.5"/>
85+<text text-anchor="middle" x="409" y="-171.4" font-family="Times Roman,serif" font-size="14.00">Write CONNECT</text>
86+</g>
87+<!-- loop -->
88+<g id="node8" class="node"><title>loop</title>
89+<ellipse fill="none" stroke="black" cx="746" cy="-166" rx="31.8198" ry="31.8198"/>
90+<text text-anchor="middle" x="746" y="-162.4" font-family="Times Roman,serif" font-size="14.00">loop</text>
91+</g>
92+<!-- start3&#45;&gt;loop -->
93+<g id="edge6" class="edge"><title>start3&#45;&gt;loop</title>
94+<path fill="none" stroke="black" d="M567.639,-166C606.633,-166 664.616,-166 703.793,-166"/>
95+<polygon fill="black" stroke="black" points="703.818,-169.5 713.818,-166 703.818,-162.5 703.818,-169.5"/>
96+<text text-anchor="middle" x="641" y="-171.4" font-family="Times Roman,serif" font-size="14.00">Read CONNACK</text>
97+</g>
98+<!-- loop&#45;&gt;pingTimeout -->
99+<g id="edge16" class="edge"><title>loop&#45;&gt;pingTimeout</title>
100+<path fill="none" stroke="black" d="M763.666,-192.937C772.211,-204.042 783.361,-216.128 796,-224 888.06,-281.339 1012.12,-305.973 1094,-316.443"/>
101+<polygon fill="black" stroke="black" points="1093.67,-319.928 1104.02,-317.68 1094.53,-312.981 1093.67,-319.928"/>
102+<text text-anchor="middle" x="941" y="-319.4" font-family="Times Roman,serif" font-size="14.00">Elapsed ping interval + exchange interval</text>
103+</g>
104+<!-- pong -->
105+<g id="node10" class="node"><title>pong</title>
106+<ellipse fill="none" stroke="black" cx="1180" cy="-195" rx="34.8574" ry="35.3553"/>
107+<text text-anchor="middle" x="1180" y="-191.4" font-family="Times Roman,serif" font-size="14.00">pong</text>
108+</g>
109+<!-- loop&#45;&gt;pong -->
110+<g id="edge8" class="edge"><title>loop&#45;&gt;pong</title>
111+<path fill="none" stroke="black" d="M775.392,-179.044C782.046,-181.465 789.167,-183.653 796,-185 916.362,-208.722 1062.02,-203.515 1134.48,-198.706"/>
112+<polygon fill="black" stroke="black" points="1134.89,-202.186 1144.62,-198.003 1134.4,-195.203 1134.89,-202.186"/>
113+<text text-anchor="middle" x="941" y="-207.4" font-family="Times Roman,serif" font-size="14.00">Read PING</text>
114+</g>
115+<!-- broadcast -->
116+<g id="node12" class="node"><title>broadcast</title>
117+<ellipse fill="none" stroke="black" cx="1180" cy="-84" rx="58.1882" ry="58.6899"/>
118+<text text-anchor="middle" x="1180" y="-80.4" font-family="Times Roman,serif" font-size="14.00">broadcast</text>
119+</g>
120+<!-- loop&#45;&gt;broadcast -->
121+<g id="edge10" class="edge"><title>loop&#45;&gt;broadcast</title>
122+<path fill="none" stroke="black" d="M770.52,-145.1C778.217,-139.607 787.053,-134.301 796,-131 917.482,-86.1746 957.924,-122.075 1086,-103 1094.61,-101.717 1103.63,-100.165 1112.53,-98.5074"/>
123+<polygon fill="black" stroke="black" points="1113.34,-101.917 1122.5,-96.5998 1112.02,-95.0419 1113.34,-101.917"/>
124+<text text-anchor="middle" x="941" y="-136.4" font-family="Times Roman,serif" font-size="14.00">Read BROADCAST</text>
125+</g>
126+<!-- pong&#45;&gt;loop -->
127+<g id="edge12" class="edge"><title>pong&#45;&gt;loop</title>
128+<path fill="none" stroke="black" d="M1147.19,-180.867C1129.44,-173.986 1106.92,-166.463 1086,-163 980.081,-145.465 853.051,-154.36 788.368,-160.981"/>
129+<polygon fill="black" stroke="black" points="787.736,-157.528 778.16,-162.06 788.472,-164.489 787.736,-157.528"/>
130+<text text-anchor="middle" x="941" y="-168.4" font-family="Times Roman,serif" font-size="14.00">Write PONG</text>
131+</g>
132+<!-- broadcast&#45;&gt;loop -->
133+<g id="edge14" class="edge"><title>broadcast&#45;&gt;loop</title>
134+<path fill="none" stroke="black" d="M1123.8,-67.0114C1044.83,-46.6166 899.156,-22.0001 796,-81 778.946,-90.7538 767.135,-108.842 759.293,-125.833"/>
135+<polygon fill="black" stroke="black" points="756.044,-124.528 755.336,-135.099 762.482,-127.277 756.044,-124.528"/>
136+<text text-anchor="middle" x="941" y="-86.4" font-family="Times Roman,serif" font-size="14.00">Write ACK</text>
137+</g>
138+</g>
139+</svg>
140
141=== added file 'protocol/state-diag-session.gv'
142--- protocol/state-diag-session.gv 1970-01-01 00:00:00 +0000
143+++ protocol/state-diag-session.gv 2014-01-16 20:07:29 +0000
144@@ -0,0 +1,20 @@
145+digraph state_diagram_session {
146+ label = "State diagram for session";
147+ size="12,6";
148+ rankdir=LR;
149+ node [shape = circle];
150+ start1 -> start2 [ label = "Read wire version" ];
151+ start2 -> start3 [ label = "Read CONNECT" ];
152+ start3 -> loop [ label = "Write CONNACK" ];
153+ loop -> ping [ label = "Elapsed ping interval" ];
154+ loop -> broadcast [label = "Receive broadcast request"];
155+ ping -> pong_wait [label = "Write PING"];
156+ broadcast -> ack_wait [label = "Write BROADCAST [fits one wire msg]"];
157+ broadcast -> split_broadcast [label = "BROADCAST does not fit one wire msg"];
158+ pong_wait -> loop [label = "Read PONG"];
159+ ack_wait -> loop [label = "Read ACK"];
160+ // split messages
161+ split_broadcast -> split_ack_wait [label = "Write split BROADCAST"];
162+ split_ack_wait -> split_broadcast [label = "Read ACK"];
163+ split_broadcast -> loop [label = "All split msgs written"];
164+}
165
166=== added file 'protocol/state-diag-session.svg'
167--- protocol/state-diag-session.svg 1970-01-01 00:00:00 +0000
168+++ protocol/state-diag-session.svg 2014-01-16 20:07:29 +0000
169@@ -0,0 +1,142 @@
170+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
171+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
172+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
173+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
174+ -->
175+<!-- Title: state_diagram_session Pages: 1 -->
176+<svg width="864pt" height="208pt"
177+ viewBox="0.00 0.00 864.00 207.94" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
178+<g id="graph1" class="graph" transform="scale(0.435923 0.435923) rotate(0) translate(4 473)">
179+<title>state_diagram_session</title>
180+<polygon fill="white" stroke="white" points="-4,5 -4,-473 1979,-473 1979,5 -4,5"/>
181+<text text-anchor="middle" x="987" y="-9.4" font-family="Times Roman,serif" font-size="14.00">State diagram for session</text>
182+<!-- start1 -->
183+<g id="node1" class="node"><title>start1</title>
184+<ellipse fill="none" stroke="black" cx="42" cy="-294" rx="41.2167" ry="41.7193"/>
185+<text text-anchor="middle" x="42" y="-290.4" font-family="Times Roman,serif" font-size="14.00">start1</text>
186+</g>
187+<!-- start2 -->
188+<g id="node3" class="node"><title>start2</title>
189+<ellipse fill="none" stroke="black" cx="286" cy="-294" rx="41.2167" ry="41.7193"/>
190+<text text-anchor="middle" x="286" y="-290.4" font-family="Times Roman,serif" font-size="14.00">start2</text>
191+</g>
192+<!-- start1&#45;&gt;start2 -->
193+<g id="edge2" class="edge"><title>start1&#45;&gt;start2</title>
194+<path fill="none" stroke="black" d="M83.6679,-294C125.213,-294 189.13,-294 233.981,-294"/>
195+<polygon fill="black" stroke="black" points="234.096,-297.5 244.096,-294 234.096,-290.5 234.096,-297.5"/>
196+<text text-anchor="middle" x="164" y="-299.4" font-family="Times Roman,serif" font-size="14.00">Read wire version</text>
197+</g>
198+<!-- start3 -->
199+<g id="node5" class="node"><title>start3</title>
200+<ellipse fill="none" stroke="black" cx="516" cy="-294" rx="41.2167" ry="41.7193"/>
201+<text text-anchor="middle" x="516" y="-290.4" font-family="Times Roman,serif" font-size="14.00">start3</text>
202+</g>
203+<!-- start2&#45;&gt;start3 -->
204+<g id="edge4" class="edge"><title>start2&#45;&gt;start3</title>
205+<path fill="none" stroke="black" d="M327.651,-294C365.959,-294 422.903,-294 464.145,-294"/>
206+<polygon fill="black" stroke="black" points="464.271,-297.5 474.271,-294 464.271,-290.5 464.271,-297.5"/>
207+<text text-anchor="middle" x="401" y="-299.4" font-family="Times Roman,serif" font-size="14.00">Read CONNECT</text>
208+</g>
209+<!-- loop -->
210+<g id="node7" class="node"><title>loop</title>
211+<ellipse fill="none" stroke="black" cx="740" cy="-294" rx="31.8198" ry="31.8198"/>
212+<text text-anchor="middle" x="740" y="-290.4" font-family="Times Roman,serif" font-size="14.00">loop</text>
213+</g>
214+<!-- start3&#45;&gt;loop -->
215+<g id="edge6" class="edge"><title>start3&#45;&gt;loop</title>
216+<path fill="none" stroke="black" d="M557.608,-294C597.53,-294 657.517,-294 697.677,-294"/>
217+<polygon fill="black" stroke="black" points="697.687,-297.5 707.687,-294 697.687,-290.5 697.687,-297.5"/>
218+<text text-anchor="middle" x="633" y="-299.4" font-family="Times Roman,serif" font-size="14.00">Write CONNACK</text>
219+</g>
220+<!-- ping -->
221+<g id="node9" class="node"><title>ping</title>
222+<ellipse fill="none" stroke="black" cx="1063" cy="-416" rx="32.0265" ry="32.5269"/>
223+<text text-anchor="middle" x="1063" y="-412.4" font-family="Times Roman,serif" font-size="14.00">ping</text>
224+</g>
225+<!-- loop&#45;&gt;ping -->
226+<g id="edge8" class="edge"><title>loop&#45;&gt;ping</title>
227+<path fill="none" stroke="black" d="M754.564,-322.853C763.046,-336.78 775.035,-352.491 790,-362 861.597,-407.491 963.396,-415.983 1020.29,-416.829"/>
228+<polygon fill="black" stroke="black" points="1020.35,-420.33 1030.38,-416.906 1020.4,-413.33 1020.35,-420.33"/>
229+<text text-anchor="middle" x="881" y="-418.4" font-family="Times Roman,serif" font-size="14.00">Elapsed ping interval</text>
230+</g>
231+<!-- broadcast -->
232+<g id="node11" class="node"><title>broadcast</title>
233+<ellipse fill="none" stroke="black" cx="1063" cy="-200" rx="58.1882" ry="58.6899"/>
234+<text text-anchor="middle" x="1063" y="-196.4" font-family="Times Roman,serif" font-size="14.00">broadcast</text>
235+</g>
236+<!-- loop&#45;&gt;broadcast -->
237+<g id="edge10" class="edge"><title>loop&#45;&gt;broadcast</title>
238+<path fill="none" stroke="black" d="M766.046,-274.934C773.498,-270.155 781.824,-265.421 790,-262 856.828,-234.035 938.382,-217.617 994.86,-208.779"/>
239+<polygon fill="black" stroke="black" points="995.396,-212.238 1004.75,-207.269 994.34,-205.318 995.396,-212.238"/>
240+<text text-anchor="middle" x="881" y="-267.4" font-family="Times Roman,serif" font-size="14.00">Receive broadcast request</text>
241+</g>
242+<!-- pong_wait -->
243+<g id="node13" class="node"><title>pong_wait</title>
244+<ellipse fill="none" stroke="black" cx="1526" cy="-406" rx="62.9325" ry="62.9325"/>
245+<text text-anchor="middle" x="1526" y="-402.4" font-family="Times Roman,serif" font-size="14.00">pong_wait</text>
246+</g>
247+<!-- ping&#45;&gt;pong_wait -->
248+<g id="edge12" class="edge"><title>ping&#45;&gt;pong_wait</title>
249+<path fill="none" stroke="black" d="M1095.56,-415.297C1169.19,-413.707 1350.04,-409.8 1452.36,-407.591"/>
250+<polygon fill="black" stroke="black" points="1452.69,-411.084 1462.61,-407.369 1452.54,-404.086 1452.69,-411.084"/>
251+<text text-anchor="middle" x="1289" y="-418.4" font-family="Times Roman,serif" font-size="14.00">Write PING</text>
252+</g>
253+<!-- ack_wait -->
254+<g id="node15" class="node"><title>ack_wait</title>
255+<ellipse fill="none" stroke="black" cx="1526" cy="-269" rx="55.1543" ry="55.1543"/>
256+<text text-anchor="middle" x="1526" y="-265.4" font-family="Times Roman,serif" font-size="14.00">ack_wait</text>
257+</g>
258+<!-- broadcast&#45;&gt;ack_wait -->
259+<g id="edge14" class="edge"><title>broadcast&#45;&gt;ack_wait</title>
260+<path fill="none" stroke="black" d="M1121.17,-208.669C1207.93,-221.599 1370.7,-245.856 1461.17,-259.339"/>
261+<polygon fill="black" stroke="black" points="1460.9,-262.837 1471.3,-260.849 1461.93,-255.913 1460.9,-262.837"/>
262+<text text-anchor="middle" x="1289" y="-257.4" font-family="Times Roman,serif" font-size="14.00">Write BROADCAST [fits one wire msg]</text>
263+</g>
264+<!-- split_broadcast -->
265+<g id="node17" class="node"><title>split_broadcast</title>
266+<ellipse fill="none" stroke="black" cx="1526" cy="-110" rx="84.1457" ry="84.1457"/>
267+<text text-anchor="middle" x="1526" y="-106.4" font-family="Times Roman,serif" font-size="14.00">split_broadcast</text>
268+</g>
269+<!-- broadcast&#45;&gt;split_broadcast -->
270+<g id="edge16" class="edge"><title>broadcast&#45;&gt;split_broadcast</title>
271+<path fill="none" stroke="black" d="M1120.7,-188.783C1199.06,-173.553 1340.01,-146.154 1433.29,-128.021"/>
272+<polygon fill="black" stroke="black" points="1434.15,-131.421 1443.29,-126.077 1432.81,-124.549 1434.15,-131.421"/>
273+<text text-anchor="middle" x="1289" y="-185.4" font-family="Times Roman,serif" font-size="14.00">BROADCAST does not fit one wire msg</text>
274+</g>
275+<!-- pong_wait&#45;&gt;loop -->
276+<g id="edge18" class="edge"><title>pong_wait&#45;&gt;loop</title>
277+<path fill="none" stroke="black" d="M1463.29,-398.59C1336,-383.27 1038.34,-346.004 790,-304 787.177,-303.523 784.269,-303.006 781.343,-302.468"/>
278+<polygon fill="black" stroke="black" points="781.898,-299.011 771.42,-300.582 780.59,-305.888 781.898,-299.011"/>
279+<text text-anchor="middle" x="1063" y="-359.4" font-family="Times Roman,serif" font-size="14.00">Read PONG</text>
280+</g>
281+<!-- ack_wait&#45;&gt;loop -->
282+<g id="edge20" class="edge"><title>ack_wait&#45;&gt;loop</title>
283+<path fill="none" stroke="black" d="M1470.96,-271.898C1455.75,-272.644 1439.24,-273.404 1424,-274 1181.02,-283.507 889.323,-290.597 782.144,-293.057"/>
284+<polygon fill="black" stroke="black" points="781.977,-289.56 772.059,-293.288 782.136,-296.558 781.977,-289.56"/>
285+<text text-anchor="middle" x="1063" y="-292.4" font-family="Times Roman,serif" font-size="14.00">Read ACK</text>
286+</g>
287+<!-- split_broadcast&#45;&gt;loop -->
288+<g id="edge26" class="edge"><title>split_broadcast&#45;&gt;loop</title>
289+<path fill="none" stroke="black" d="M1442.56,-99.9981C1336.06,-89.6718 1146.8,-79.5577 990,-115 894.383,-136.612 862.41,-141.921 790,-208 775.817,-220.943 764.522,-238.865 756.283,-254.999"/>
290+<polygon fill="black" stroke="black" points="753.014,-253.718 751.785,-264.241 759.308,-256.781 753.014,-253.718"/>
291+<text text-anchor="middle" x="1063" y="-120.4" font-family="Times Roman,serif" font-size="14.00">All split msgs written</text>
292+</g>
293+<!-- split_ack_wait -->
294+<g id="node21" class="node"><title>split_ack_wait</title>
295+<ellipse fill="none" stroke="black" cx="1893" cy="-110" rx="80.1095" ry="80.6102"/>
296+<text text-anchor="middle" x="1893" y="-106.4" font-family="Times Roman,serif" font-size="14.00">split_ack_wait</text>
297+</g>
298+<!-- split_broadcast&#45;&gt;split_ack_wait -->
299+<g id="edge22" class="edge"><title>split_broadcast&#45;&gt;split_ack_wait</title>
300+<path fill="none" stroke="black" d="M1610.2,-110C1667.61,-110 1743.59,-110 1802.33,-110"/>
301+<polygon fill="black" stroke="black" points="1802.35,-113.5 1812.35,-110 1802.34,-106.5 1802.35,-113.5"/>
302+<text text-anchor="middle" x="1711" y="-115.4" font-family="Times Roman,serif" font-size="14.00">Write split BROADCAST</text>
303+</g>
304+<!-- split_ack_wait&#45;&gt;split_broadcast -->
305+<g id="edge24" class="edge"><title>split_ack_wait&#45;&gt;split_broadcast</title>
306+<path fill="none" stroke="black" d="M1814.64,-90.9448C1807.69,-89.7544 1800.74,-88.7397 1794,-88 1720.66,-79.9496 1701.36,-80.1783 1628,-88 1624.71,-88.3505 1621.38,-88.7628 1618.01,-89.2264"/>
307+<polygon fill="black" stroke="black" points="1617.23,-85.8043 1607.87,-90.7602 1618.28,-92.7256 1617.23,-85.8043"/>
308+<text text-anchor="middle" x="1711" y="-93.4" font-family="Times Roman,serif" font-size="14.00">Read ACK</text>
309+</g>
310+</g>
311+</svg>

Subscribers

People subscribed via source and target branches