Skip to content

Instantly share code, notes, and snippets.

@lovettchris
Last active October 28, 2019 19:15
Show Gist options
  • Save lovettchris/39bba45067ed233e98803c6d7fc14c40 to your computer and use it in GitHub Desktop.
Save lovettchris/39bba45067ed233e98803c6d7fc14c40 to your computer and use it in GitHub Desktop.
A DGML graph generated by CoyoteTester
<DirectedGraph xmlns='http://schemas.microsoft.com/vs/2009/dgml'>
<Nodes>
<Node Id='Coyote.Examples.FailureDetector.Driver' Label='Coyote.Examples.FailureDetector.Driver' Group='Expanded'/>
<Node Id='Coyote.Examples.FailureDetector.Driver.Init' Label='Init'/>
<Node Id='Coyote.Examples.FailureDetector.Driver.InjectFailures' Label='InjectFailures'/>
<Node Id='Coyote.Examples.FailureDetector.FailureDetector' Label='Coyote.Examples.FailureDetector.FailureDetector' Group='Expanded'/>
<Node Id='Coyote.Examples.FailureDetector.FailureDetector.Init' Label='Init'/>
<Node Id='Coyote.Examples.FailureDetector.FailureDetector.Reset' Label='Reset'/>
<Node Id='Coyote.Examples.FailureDetector.FailureDetector.SendPing' Label='SendPing'/>
<Node Id='Coyote.Examples.FailureDetector.Liveness' Label='Coyote.Examples.FailureDetector.Liveness' Group='Expanded'/>
<Node Id='Coyote.Examples.FailureDetector.Liveness.Done' Label='Done'/>
<Node Id='Coyote.Examples.FailureDetector.Liveness.Init' Label='Init'/>
<Node Id='Coyote.Examples.FailureDetector.Liveness.Wait' Label='Wait'/>
<Node Id='Coyote.Examples.FailureDetector.Liveness.Wait[hot]' Label='Wait[hot]'/>
<Node Id='Coyote.Examples.FailureDetector.Node' Label='Coyote.Examples.FailureDetector.Node' Group='Expanded'/>
<Node Id='Coyote.Examples.FailureDetector.Node.Halt' Label='Halt'/>
<Node Id='Coyote.Examples.FailureDetector.Node.Init' Label='Init'/>
<Node Id='Coyote.Examples.FailureDetector.Node.WaitPing' Label='WaitPing'/>
<Node Id='Coyote.Examples.FailureDetector.Safety' Label='Coyote.Examples.FailureDetector.Safety'/>
<Node Id='Coyote.Examples.FailureDetector.Timer' Label='Coyote.Examples.FailureDetector.Timer' Group='Expanded'/>
<Node Id='Coyote.Examples.FailureDetector.Timer.Init' Label='Init'/>
<Node Id='Coyote.Examples.FailureDetector.Timer.WaitForCancel' Label='WaitForCancel'/>
<Node Id='Coyote.Examples.FailureDetector.Timer.WaitForReq' Label='WaitForReq'/>
</Nodes>
<Links>
<Link Source='Coyote.Examples.FailureDetector.Driver.Init' Target='Coyote.Examples.FailureDetector.Driver.Init' Label='goto' EventId='Microsoft.Coyote.Machines.GotoStateEvent'/>
<Link Source='Coyote.Examples.FailureDetector.Driver.Init' Target='Coyote.Examples.FailureDetector.Driver.InjectFailures' Label='goto'/>
<Link Source='Coyote.Examples.FailureDetector.Driver.Init' Target='Coyote.Examples.FailureDetector.FailureDetector.SendPing' Label='RegisterClient' EventId='Coyote.Examples.FailureDetector.Driver+RegisterClient'/>
<Link Source='Coyote.Examples.FailureDetector.Driver.InjectFailures' Target='Coyote.Examples.FailureDetector.Node.WaitPing' Label='Microsoft.Coyote.Machines.Halt' EventId='Microsoft.Coyote.Machines.Halt'/>
<Link Source='Coyote.Examples.FailureDetector.Driver' Target='Coyote.Examples.FailureDetector.Driver.Init' Category='Contains'/>
<Link Source='Coyote.Examples.FailureDetector.Driver' Target='Coyote.Examples.FailureDetector.Driver.InjectFailures' Category='Contains'/>
<Link Source='Coyote.Examples.FailureDetector.FailureDetector.Init' Target='Coyote.Examples.FailureDetector.FailureDetector.Init' Label='Unit' EventId='Coyote.Examples.FailureDetector.FailureDetector+Unit'/>
<Link Source='Coyote.Examples.FailureDetector.FailureDetector.Init' Target='Coyote.Examples.FailureDetector.FailureDetector.SendPing' Label='Microsoft.Coyote.Machines.Halt(push)' EventId='Microsoft.Coyote.Machines.Halt'/>
<Link Source='Coyote.Examples.FailureDetector.FailureDetector.Reset' Target='Coyote.Examples.FailureDetector.FailureDetector.SendPing' Label='TimeoutEvent(goto)' EventId='Coyote.Examples.FailureDetector.Timer+TimeoutEvent'/>
<Link Source='Coyote.Examples.FailureDetector.FailureDetector.Reset' Target='Coyote.Examples.FailureDetector.Timer.WaitForReq' Label='StartTimerEvent' EventId='Coyote.Examples.FailureDetector.Timer+StartTimerEvent'/>
<Link Source='Coyote.Examples.FailureDetector.FailureDetector.SendPing' Target='Coyote.Examples.FailureDetector.Driver.InjectFailures' Label='NodeFailed' EventId='Coyote.Examples.FailureDetector.FailureDetector+NodeFailed'/>
<Link Source='Coyote.Examples.FailureDetector.FailureDetector.SendPing' Target='Coyote.Examples.FailureDetector.FailureDetector.Reset' Label='TimeoutEvent(goto)' EventId='Coyote.Examples.FailureDetector.Timer+TimeoutEvent'/>
<Link Source='Coyote.Examples.FailureDetector.FailureDetector.SendPing' Target='Coyote.Examples.FailureDetector.FailureDetector.SendPing' Label='goto' EventId='Coyote.Examples.FailureDetector.FailureDetector+RoundDone'/>
<Link Source='Coyote.Examples.FailureDetector.FailureDetector.SendPing' Target='Coyote.Examples.FailureDetector.Timer.WaitForReq' Label='StartTimerEvent' EventId='Coyote.Examples.FailureDetector.Timer+StartTimerEvent'/>
<Link Source='Coyote.Examples.FailureDetector.FailureDetector' Target='Coyote.Examples.FailureDetector.FailureDetector.Init' Category='Contains'/>
<Link Source='Coyote.Examples.FailureDetector.FailureDetector' Target='Coyote.Examples.FailureDetector.FailureDetector.Reset' Category='Contains'/>
<Link Source='Coyote.Examples.FailureDetector.FailureDetector' Target='Coyote.Examples.FailureDetector.FailureDetector.SendPing' Category='Contains'/>
<Link Source='Coyote.Examples.FailureDetector.Liveness.Init' Target='Coyote.Examples.FailureDetector.Liveness.Init' Label='goto' EventId='Microsoft.Coyote.Machines.GotoStateEvent'/>
<Link Source='Coyote.Examples.FailureDetector.Liveness.Init' Target='Coyote.Examples.FailureDetector.Liveness.Wait[hot]' Label='RegisterNodes' EventId='Coyote.Examples.FailureDetector.Liveness+RegisterNodes'/>
<Link Source='Coyote.Examples.FailureDetector.Liveness.Wait' Target='Coyote.Examples.FailureDetector.Liveness.Done' Label='NodeFailed' EventId='Coyote.Examples.FailureDetector.FailureDetector+NodeFailed'/>
<Link Source='Coyote.Examples.FailureDetector.Liveness.Wait' Target='Coyote.Examples.FailureDetector.Liveness.Wait[hot]' Label='goto' EventId='Microsoft.Coyote.Machines.GotoStateEvent'/>
<Link Source='Coyote.Examples.FailureDetector.Liveness' Target='Coyote.Examples.FailureDetector.Liveness.Done' Category='Contains'/>
<Link Source='Coyote.Examples.FailureDetector.Liveness' Target='Coyote.Examples.FailureDetector.Liveness.Init' Category='Contains'/>
<Link Source='Coyote.Examples.FailureDetector.Liveness' Target='Coyote.Examples.FailureDetector.Liveness.Wait' Category='Contains'/>
<Link Source='Coyote.Examples.FailureDetector.Liveness' Target='Coyote.Examples.FailureDetector.Liveness.Wait[hot]' Category='Contains'/>
<Link Source='Coyote.Examples.FailureDetector.Node.Halt' Target='Coyote.Examples.FailureDetector.Node.Halt' Label='halt'/>
<Link Source='Coyote.Examples.FailureDetector.Node.Init' Target='Coyote.Examples.FailureDetector.Node.Halt' Label='halt'/>
<Link Source='Coyote.Examples.FailureDetector.Node' Target='Coyote.Examples.FailureDetector.Node.Halt' Category='Contains'/>
<Link Source='Coyote.Examples.FailureDetector.Node' Target='Coyote.Examples.FailureDetector.Node.Init' Category='Contains'/>
<Link Source='Coyote.Examples.FailureDetector.Node' Target='Coyote.Examples.FailureDetector.Node.WaitPing' Category='Contains'/>
<Link Source='Coyote.Examples.FailureDetector.Timer.Init' Target='Coyote.Examples.FailureDetector.Timer.Init' Label='goto' EventId='Microsoft.Coyote.Machines.GotoStateEvent'/>
<Link Source='Coyote.Examples.FailureDetector.Timer.Init' Target='Coyote.Examples.FailureDetector.Timer.WaitForReq' Label='RegisterClient(goto)' EventId='Coyote.Examples.FailureDetector.Driver+RegisterClient'/>
<Link Source='Coyote.Examples.FailureDetector.Timer.WaitForCancel' Target='Coyote.Examples.FailureDetector.FailureDetector.Reset' Label='TimeoutEvent' EventId='Coyote.Examples.FailureDetector.Timer+TimeoutEvent'/>
<Link Source='Coyote.Examples.FailureDetector.Timer.WaitForCancel' Target='Coyote.Examples.FailureDetector.FailureDetector.SendPing' Label='TimeoutEvent' EventId='Coyote.Examples.FailureDetector.Timer+TimeoutEvent'/>
<Link Source='Coyote.Examples.FailureDetector.Timer.WaitForCancel' Target='Coyote.Examples.FailureDetector.Timer.WaitForReq' Label='goto'/>
<Link Source='Coyote.Examples.FailureDetector.Timer.WaitForReq' Target='Coyote.Examples.FailureDetector.Timer.WaitForCancel' Label='StartTimerEvent(goto)' EventId='Coyote.Examples.FailureDetector.Timer+StartTimerEvent'/>
<Link Source='Coyote.Examples.FailureDetector.Timer' Target='Coyote.Examples.FailureDetector.Timer.Init' Category='Contains'/>
<Link Source='Coyote.Examples.FailureDetector.Timer' Target='Coyote.Examples.FailureDetector.Timer.WaitForCancel' Category='Contains'/>
<Link Source='Coyote.Examples.FailureDetector.Timer' Target='Coyote.Examples.FailureDetector.Timer.WaitForReq' Category='Contains'/>
</Links>
</DirectedGraph>
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="utf-8"?>
<svg stroke-linecap="round" font-size="12" font-family="Segoe UI" width="1054.596950592746" height="720.85500000000047" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
<defs />
<rect width="1054.596950592746" height="720.85500000000047" fill="#1E1E1E" />
<g transform="translate(20,20)">
<path d="M 357.096666666667,195.744688628473 C 298.062023239131,229.572750109283 264.19509230258,248.446710693061 255.495873857016,252.366570379809 C 249.573179661839,255.03533083891 237.441470751477,261.716166270951 219.10074712593,272.409076675932" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 211.335,276.958051458902 L 221.98537448791,275.35507820046 C 219.774669316,273.559557731626 218.426824935861,271.258595620239 217.941841347492,268.4521918663 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<path d="M 497.6675,229.8 L 497.6675,252.4875" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 497.6675,261.4875 L 501.6675,251.4875 C 499.000833333333,252.4875 496.334166666667,252.4875 493.6675,251.4875 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<path d="M 376.25338824491,451.055 C 383.214600102435,442.351212147543 390.511712091963,433.949398513757 398.144724213495,425.849559098642" fill="none" stroke="#A0A0A0" stroke-width="1.5" />
<path d="M 404.388353754213,419.3675 L 394.570072442908,423.794841424839 C 397.184419161845,424.924576944462 399.105029265146,426.774541252822 400.331902752812,429.344734349921 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<path d="M 511.664320649534,451.055 C 508.488403176966,443.148740851244 505.852954074597,435.491651479314 503.757973342427,428.083731884208" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 501.515808821094,419.3675 L 500.13322189626,430.048719658601 C 502.466679729952,428.415904405887 505.049266954902,427.751559362529 507.880983571111,428.055684528527 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<path d="M 460.193494744634,419.3675 C 452.243467672971,430.546622803651 442.361026372216,442.32479401832 430.546170842371,454.702013644007" fill="none" stroke="#A0A0A0" stroke-width="1.792481250360578" />
<path d="M 424.26875,461.151353731781 L 434.110035419423,456.775385119752 C 431.501628633152,455.632001916951 429.590713051589,453.772025371063 428.377288674734,451.195455482089 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<path d="M 557.320949811515,419.3675 C 561.064467580091,426.790383265528 564.235101408376,434.477380716861 566.83285129637,442.428492354001" fill="none" stroke="#A0A0A0" stroke-width="1.792481250360578" />
<path d="M 569.398658349427,451.055 L 570.38176502203,440.329632814198 C 568.11085242911,442.048372790585 565.554850163629,442.808611917417 562.713758225586,442.610350194693 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<rect y="261.48750000000018" rx="5" ry="5" width="211.33499999999998" height="157.88000000000011" fill="#EEEEEE" stroke="#A5A6A9" stroke-width="1" />
<text x="32" y="279.43750000000017" fill="#000000">Coyote.Examples.Raft.Client</text>
<rect x="5" y="289.44750000000016" width="201.33499999999998" height="124.9200000000001" fill="#1E1E1E" stroke="#A5A6A9" stroke-width="1" />
<path d="M 119.686666666667,308.046331940105 C 116.845500148801,308.000443980035 113.762166815467,307.9775 110.436666666667,307.9775 C 87.6033333333333,307.9775 76.1866666666667,310.140833333333 76.1866666666667,314.4675 C 76.1866666666667,318.794166666667 87.6033333333333,320.9575 110.436666666667,320.9575 C 110.520240575599,320.9575 110.603661537123,320.957485509071 110.686929551241,320.957456527212" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 119.686666666667,320.888668059896 L 109.656386108498,316.965216527835 C 110.676738667195,319.624162139741 110.697120435288,322.290750914682 109.717531412779,324.964982852658 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="20" y="319.43750000000017" fill="#A0A0A0">LocalEvent</text>
<path d="M 144.686666666667,327.4475 L 144.686666666667,364.4075" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 144.686666666667,373.4075 L 148.686666666667,363.4075 C 146.02,364.4075 143.353333333333,364.4075 140.686666666667,363.4075 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="63.516666666666652" y="355.39750000000021" fill="#A0A0A0">ConfigureEvent</text>
<rect x="119.68666666666667" y="301.48750000000018" rx="3" ry="3" width="50" height="25.95999999999998" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="135.68666666666667" y="319.43750000000017" fill="#3D3D3D">Init</text>
<rect x="98.038333333333327" y="373.40750000000025" rx="3" ry="3" width="93.296666666666653" height="25.960000000000036" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="108.03833333333333" y="391.35750000000024" fill="#3D3D3D">PumpRequest</text>
<rect x="357.09666666666669" rx="5" ry="5" width="281.14166666666665" height="229.80000000000018" fill="#EEEEEE" stroke="#A5A6A9" stroke-width="1" />
<text x="397.09666666666669" y="17.950000000000003" fill="#000000">Coyote.Examples.Raft.ClusterManager</text>
<rect x="362.09666666666669" y="27.96" width="271.14166666666665" height="196.84000000000017" fill="#1E1E1E" stroke="#A5A6A9" stroke-width="1" />
<path d="M 518.136666666667,137.88 L 518.136666666667,174.84" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 518.136666666667,183.84 L 522.136666666667,173.84 C 519.47,174.84 516.803333333333,174.84 514.136666666667,173.84 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="436.9666666666667" y="165.8300000000001" fill="#A0A0A0">ConfigureEvent</text>
<path d="M 476.783333333333,118.41052588707 C 476.427847454417,118.41017529569 476.070069676639,118.41 475.71,118.41 C 447.425555555556,118.41 433.283333333333,120.573333333333 433.283333333333,124.9 C 433.283333333333,128.801619185805 444.783404768696,130.944074395758 467.783547639422,131.327365629858" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 476.783333333333,131.38947411293 L 466.811175221464,127.320559934445 C 467.792748896173,129.994064045575 467.774346382671,132.660667214142 466.755967680956,135.320369440144 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="377.09666666666669" y="129.87000000000006" fill="#A0A0A0">LocalEvent</text>
<path d="M 518.136666666667,65.96 L 518.136666666667,102.92" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 518.136666666667,111.92 L 522.136666666667,101.92 C 519.47,102.92 516.803333333333,102.92 514.136666666667,101.92 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="492.94333333333327" y="93.910000000000039" fill="#A0A0A0">goto</text>
<path d="M 493.136666666667,46.5588319401044 C 490.295500148801,46.5129439800348 487.212166815467,46.49 483.886666666667,46.49 C 461.053333333333,46.49 449.636666666667,48.6533333333333 449.636666666667,52.98 C 449.636666666667,57.3066666666666 461.053333333333,59.47 483.886666666667,59.47 C 483.970240575599,59.47 484.053661537124,59.4699855090705 484.136929551241,59.4699565272115" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 493.136666666667,59.4011680598957 L 483.106386108498,55.4777165278353 C 484.126738667195,58.1366621397411 484.147120435288,60.8032509146819 483.167531412779,63.4774828526578 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="393.45000000000005" y="57.95" fill="#A0A0A0">LocalEvent</text>
<rect x="418.03500000000008" y="183.84000000000015" rx="3" ry="3" width="200.20333333333338" height="25.960000000000008" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="428.03500000000008" y="201.79000000000013" fill="#3D3D3D">Availability.Availability.Unavailable</text>
<rect x="476.78333333333342" y="111.92000000000007" rx="3" ry="3" width="82.7066666666667" height="25.960000000000036" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="486.78333333333342" y="129.87000000000006" fill="#3D3D3D">Configuring</text>
<rect x="493.13666666666666" y="40" rx="3" ry="3" width="50" height="25.960000000000008" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="509.13666666666666" y="57.95" fill="#3D3D3D">Init</text>
<rect x="183.06624999999997" y="451.05500000000029" rx="5" ry="5" width="241.2025" height="229.80000000000018" fill="#EEEEEE" stroke="#A5A6A9" stroke-width="1" />
<text x="209.06624999999997" y="469.00500000000028" fill="#000000">Coyote.Examples.Raft.ElectionTimer</text>
<rect x="188.06624999999997" y="479.01500000000027" width="231.2025" height="196.84000000000017" fill="#1E1E1E" stroke="#A5A6A9" stroke-width="1" />
<path d="M 296.21625,569.522885345608 C 293.529960090812,569.484295115203 290.636626757479,569.465 287.53625,569.465 C 264.322916666667,569.465 252.71625,571.628333333334 252.71625,575.955 C 252.71625,580.26175104726 264.216311756429,582.425038544858 287.216435269287,582.444862492794" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 296.21625,582.387114654393 L 286.190790148807,578.451361261189 C 287.207880033968,581.111556606763 287.224990504606,583.778168378826 286.242121560719,586.451196577378 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="203.06624999999997" y="580.92500000000041" fill="#A0A0A0">TickEvent</text>
<path d="M 337.642762791991,588.935 L 343.53125,593.935 C 357.319492198152,605.642796681123 357.640275866323,617.350593362246 344.493601004513,629.058390043369" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 337.642762791991,634.895 L 347.848854119963,631.454694809308 C 345.358283961051,630.073329037816 343.628918047975,628.043451048921 342.660756380734,625.365060842622 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="354.61875" y="616.88500000000045" fill="#A0A0A0">TickEvent</text>
<path d="M 306.835115406007,634.895 L 300.85625,629.895 C 286.83529154858,618.169565908999 286.529724438773,606.444131817997 299.939548670578,594.718697726996" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 306.835115406007,588.935 L 296.602842265755,592.296634480916 C 299.082704562875,593.69713228471 300.796392778281,595.740263169281 301.743906911973,598.42602713463 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="206.27625000000003" y="616.88500000000045" fill="#A0A0A0">StartTimerEvent</text>
<path d="M 322.35625,517.015 L 322.35625,553.975" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 322.35625,562.975 L 326.35625,552.975 C 323.689583333333,553.975 321.022916666667,553.975 318.35625,552.975 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="239.02624999999998" y="544.96500000000037" fill="#A0A0A0">StartTimerEvent</text>
<rect x="296.21625" y="562.97500000000036" rx="3" ry="3" width="52.279999999999973" height="25.960000000000036" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="306.21625" y="580.92500000000041" fill="#3D3D3D">Active</text>
<rect x="292.04125" y="634.89500000000044" rx="3" ry="3" width="60.629999999999995" height="25.960000000000036" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="302.04125" y="652.84500000000048" fill="#3D3D3D">Inactive</text>
<rect x="297.35624999999993" y="491.05500000000029" rx="3" ry="3" width="50" height="25.960000000000036" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="313.35624999999993" y="509.00500000000028" fill="#3D3D3D">Init</text>
<rect x="455.06625000000008" y="451.05500000000029" rx="5" ry="5" width="241.2025" height="229.80000000000018" fill="#EEEEEE" stroke="#A5A6A9" stroke-width="1" />
<text x="481.06625000000008" y="469.00500000000028" fill="#000000">Coyote.Examples.Raft.PeriodicTimer</text>
<rect x="460.06625000000008" y="479.01500000000027" width="231.2025" height="196.84000000000017" fill="#1E1E1E" stroke="#A5A6A9" stroke-width="1" />
<path d="M 568.21625,569.522885345608 C 565.529960090812,569.484295115203 562.636626757479,569.465 559.53625,569.465 C 536.322916666667,569.465 524.71625,571.628333333334 524.71625,575.955 C 524.71625,580.26175104726 536.216311756429,582.425038544858 559.216435269287,582.444862492794" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 568.21625,582.387114654393 L 558.190790148807,578.451361261189 C 559.207880033968,581.111556606763 559.224990504606,583.778168378826 558.24212156072,586.451196577378 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="475.06625000000014" y="580.92500000000041" fill="#A0A0A0">TickEvent</text>
<path d="M 609.642762791991,588.935 L 615.53125,593.935 C 629.319492198152,605.642796681123 629.640275866323,617.350593362246 616.493601004513,629.058390043369" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 609.642762791991,634.895 L 619.848854119963,631.454694809308 C 617.358283961051,630.073329037816 615.628918047975,628.043451048921 614.660756380734,625.365060842622 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="626.61875000000009" y="616.88500000000045" fill="#A0A0A0">TickEvent</text>
<path d="M 578.835115406007,634.895 L 572.85625,629.895 C 558.83529154858,618.169565908999 558.529724438773,606.444131817997 571.939548670578,594.718697726996" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 578.835115406007,588.935 L 568.602842265755,592.296634480916 C 571.082704562875,593.69713228471 572.796392778281,595.740263169281 573.743906911973,598.42602713463 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="478.27625000000012" y="616.88500000000045" fill="#A0A0A0">StartTimerEvent</text>
<path d="M 594.35625,517.015 L 594.35625,553.975" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 594.35625,562.975 L 598.35625,552.975 C 595.689583333333,553.975 593.022916666667,553.975 590.35625,552.975 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="511.02625000000012" y="544.96500000000037" fill="#A0A0A0">StartTimerEvent</text>
<rect x="568.21625000000006" y="562.97500000000036" rx="3" ry="3" width="52.279999999999973" height="25.960000000000036" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="578.21625000000006" y="580.92500000000041" fill="#3D3D3D">Active</text>
<rect x="564.04125" y="634.89500000000044" rx="3" ry="3" width="60.630000000000109" height="25.960000000000036" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="574.04125" y="652.84500000000048" fill="#3D3D3D">Inactive</text>
<rect x="569.35625" y="491.05500000000029" rx="3" ry="3" width="50" height="25.960000000000036" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="585.35625" y="509.00500000000028" fill="#3D3D3D">Init</text>
<rect x="783.54028392607938" rx="5" ry="5" width="231.05666666666662" height="85.960000000000036" fill="#EEEEEE" stroke="#A5A6A9" stroke-width="1" />
<text x="802.54028392607938" y="17.950000000000003" fill="#000000">Coyote.Examples.Raft.SafetyMonitor</text>
<rect x="788.54028392607938" y="27.96" width="221.05666666666662" height="53.000000000000036" fill="#1E1E1E" stroke="#A5A6A9" stroke-width="1" />
<path d="M 923.911950592746,46.5588319401044 C 921.07078407488,46.5129439800348 917.987450741547,46.49 914.661950592746,46.49 C 891.828617259413,46.49 880.411950592746,48.6533333333333 880.411950592746,52.98 C 880.411950592746,57.3066666666667 891.828617259413,59.47 914.661950592746,59.47 C 914.745524501678,59.47 914.828945463203,59.4699855090705 914.912213477321,59.4699565272115" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 923.911950592746,59.4011680598957 L 913.881670034578,55.4777165278353 C 914.902022593274,58.1366621397411 914.922404361367,60.8032509146819 913.942815338858,63.4774828526578 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="824.22528392607933" y="57.95" fill="#A0A0A0">LocalEvent</text>
<rect x="923.911950592746" y="40" rx="3" ry="3" width="50" height="25.960000000000008" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="939.911950592746" y="57.95" fill="#3D3D3D">Init</text>
<rect x="241.7947160739206" y="261.48750000000018" rx="5" ry="5" width="511.74556785215879" height="157.88000000000011" fill="#EEEEEE" stroke="#A5A6A9" stroke-width="1" />
<text x="422.7947160739206" y="279.43750000000017" fill="#000000">Coyote.Examples.Raft.Server</text>
<rect x="246.7947160739206" y="289.44750000000016" width="501.74556785215879" height="124.9200000000001" fill="#1E1E1E" stroke="#A5A6A9" stroke-width="1" />
<path d="M 448.631950592746,307.983187452922 C 447.556827854021,307.979395817641 446.45821674291,307.9775 445.336117259413,307.9775 C 418.533339481635,307.9775 405.131950592746,310.140833333333 405.131950592746,314.4675 C 405.131950592746,318.475500413008 416.631966728206,320.627098594429 439.631998999126,320.922294544261" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 448.631950592746,320.951812547078 L 438.645123489976,316.919036280117 C 439.63637203658,319.588968382243 439.627625961671,322.255620706279 438.618885265249,324.918993252224 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="308.97195059274611" y="319.43750000000017" fill="#A0A0A0">BecomeCandidate</text>
<path d="M 501.617291712509,327.4475 L 507.810283926079,332.4475 C 522.003171626074,343.906328955811 534.508449182939,355.365157911622 545.326116596674,366.823986867433" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 551.462675472242,373.4075 L 547.570282558308,363.365125908006 C 546.301451875573,365.914867034015 544.350781317775,367.73310670085 541.718270884914,368.819844908511 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="530.08028392607935" y="355.39750000000021" fill="#A0A0A0">VoteRequest</text>
<path d="M 448.631950592746,323.199234649123 L 409.540283926079,332.4475 C 364.443313404585,343.11649381548 339.416113444438,353.78548763096 334.458684045638,364.45448144644" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 333.540283926079,373.4075 L 338.539847860505,363.867879438071 C 335.785057164684,364.590540723412 333.132310926592,364.318422169468 330.581609146229,363.05152377624 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="261.7947160739206" y="357.76580561128156" fill="#A0A0A0">VoteResponse</text>
<path d="M 531.111950592746,376.588148179272 L 504.040283926079,368.4075 C 465.435729673348,356.741787639259 452.088910479758,345.076075278517 463.999826345309,333.410362917776" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 470.741062569016,327.4475 L 460.600638801442,331.076798253659 C 463.11643924638,332.411661255005 464.883213444239,334.409064580547 465.90096139502,337.069008230287 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="386.64868513196222" y="354.9010541779142" fill="#A0A0A0">TimeoutEvent</text>
<path d="M 531.111950592746,379.916134747268 C 529.339343862843,379.903711582423 527.494066085065,379.8975 525.576117259413,379.8975 C 500.266672814968,379.8975 487.611950592746,382.060833333334 487.611950592746,386.3875 C 487.611950592746,390.512045098416 499.11195096301,392.670657346039 522.111951703536,392.863336742867" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 531.111950592746,392.858865252733 L 521.109964498009,388.863834068789 C 522.111289260553,391.530003574096 522.112614146519,394.196669911639 521.113939155906,396.86383308142 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="391.45195059274619" y="391.35750000000024" fill="#A0A0A0">BecomeCandidate</text>
<path d="M 684.329900397448,326.475850230201 L 597.772342462613,369.40839896588" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 589.709638764789,373.4075 L 600.445576666424,372.547478272232 C 598.364801875075,370.60287358778 597.17988305015,368.21392434398 596.890820191651,365.380630540834 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="636.04028392607938" y="355.39750000000021" fill="#A0A0A0">ConfigureEvent</text>
<path d="M 683.540283926079,308.046331940105 C 680.699117408213,308.000443980035 677.61578407488,307.9775 674.290283926079,307.9775 C 651.456950592746,307.9775 640.040283926079,310.140833333333 640.040283926079,314.4675 C 640.040283926079,318.794166666667 651.456950592746,320.9575 674.290283926079,320.9575 C 674.373857835011,320.9575 674.457278796536,320.957485509071 674.540546810654,320.957456527212" fill="none" stroke="#A0A0A0" stroke-width="1" />
<path d="M 683.540283926079,320.888668059896 L 673.510003367911,316.965216527835 C 674.530355926607,319.624162139741 674.550737694701,322.290750914682 673.571148672192,324.964982852658 z" fill="#A0A0A0" stroke="#A0A0A0" stroke-width="1" stroke-linejoin="round" />
<text x="552.84028392607945" y="319.43750000000017" fill="#A0A0A0">BecomeFollower</text>
<rect x="448.63195059274619" y="301.48750000000018" rx="3" ry="3" width="73.81666666666672" height="25.95999999999998" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="458.63195059274619" y="319.43750000000017" fill="#3D3D3D">Candidate</text>
<rect x="531.1119505927461" y="373.40750000000025" rx="3" ry="3" width="64.85666666666657" height="25.960000000000036" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="541.1119505927461" y="391.35750000000024" fill="#3D3D3D">Follower</text>
<rect x="683.54028392607938" y="301.48750000000018" rx="3" ry="3" width="50" height="25.95999999999998" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="699.54028392607938" y="319.43750000000017" fill="#3D3D3D">Init</text>
<rect x="305.76528392607946" y="373.40750000000025" rx="3" ry="3" width="55.550000000000011" height="25.960000000000036" fill="#FFFFFF" stroke="#A5A6A9" stroke-width="1" />
<text x="315.76528392607946" y="391.35750000000024" fill="#3D3D3D">Leader</text>
</g>
</svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment