This repository was archived by the owner on Feb 5, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathfetching-workflow.drawio
100 lines (100 loc) · 9.33 KB
/
fetching-workflow.drawio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<mxfile host="app.diagrams.net" modified="2024-01-19T19:12:25.174Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" etag="eZEfkL1ladlICJWqlpMo" version="22.1.21" type="device">
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
<mxGraphModel dx="1306" dy="835" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-2" value="" style="rounded=0;html=1;jettySize=auto;orthogonalLoop=1;fontSize=11;endArrow=block;endFill=0;endSize=8;strokeWidth=1;shadow=0;labelBackgroundColor=none;edgeStyle=orthogonalEdgeStyle;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="WIyWlLk6GJQsqaUBKTNV-3" target="WIyWlLk6GJQsqaUBKTNV-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-3" value="Check local storage" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="160" y="80" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-4" value="No<br>" style="rounded=0;html=1;jettySize=auto;orthogonalLoop=1;fontSize=11;endArrow=block;endFill=0;endSize=8;strokeWidth=1;shadow=0;labelBackgroundColor=none;edgeStyle=orthogonalEdgeStyle;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="WIyWlLk6GJQsqaUBKTNV-6" edge="1">
<mxGeometry x="-0.0083" y="-10" relative="1" as="geometry">
<mxPoint x="-10" y="-10" as="offset" />
<mxPoint x="220" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-5" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;jettySize=auto;orthogonalLoop=1;fontSize=11;endArrow=block;endFill=0;endSize=8;strokeWidth=1;shadow=0;labelBackgroundColor=none;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="WIyWlLk6GJQsqaUBKTNV-6" target="WIyWlLk6GJQsqaUBKTNV-7" edge="1">
<mxGeometry y="10" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-6" value="Object exists?" style="rhombus;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=12;align=center;strokeWidth=1;spacing=6;spacingTop=-4;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="170" y="170" width="100" height="80" as="geometry" />
</mxCell>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-7" value="Return it" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="320" y="190" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uElckABoOOLrMIv7inX9-0" target="uElckABoOOLrMIv7inX9-2">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uElckABoOOLrMIv7inX9-0">
<mxGeometry relative="1" as="geometry">
<mxPoint x="400" y="520" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-0" value="Subscribe for<br>passive fetch" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="160" y="310" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-1" value="Atomic (via local storage mutex)" style="swimlane;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="140" y="40" width="330" height="420" as="geometry" />
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-2" value="Begin active fetch<br>(may check storage again)" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" vertex="1" parent="uElckABoOOLrMIv7inX9-1">
<mxGeometry x="20" y="350" width="120" height="50" as="geometry" />
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uElckABoOOLrMIv7inX9-4">
<mxGeometry relative="1" as="geometry">
<mxPoint x="360" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-9" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="uElckABoOOLrMIv7inX9-8">
<mxGeometry x="0.2838" y="1" relative="1" as="geometry">
<mxPoint x="-12" y="-9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uElckABoOOLrMIv7inX9-4">
<mxGeometry relative="1" as="geometry">
<mxPoint x="220" y="785" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-12" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="uElckABoOOLrMIv7inX9-11">
<mxGeometry x="0.0266" y="1" relative="1" as="geometry">
<mxPoint x="-11" y="-3" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-4" value="Object already<br>being fetched?" style="rhombus;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=12;align=center;strokeWidth=1;spacing=6;spacingTop=-4;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="157.5" y="630" width="125" height="100" as="geometry" />
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uElckABoOOLrMIv7inX9-2" target="uElckABoOOLrMIv7inX9-4">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-7" value="Wait for<br>passive fetch" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="340" y="520" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-10" value="Abort active<br>fetch" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="360" y="660" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uElckABoOOLrMIv7inX9-13" target="uElckABoOOLrMIv7inX9-15">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uElckABoOOLrMIv7inX9-13" target="uElckABoOOLrMIv7inX9-17">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-13" value="Fetch it" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="160" y="785" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-14" value="Atomic (via fetcher mutex)" style="swimlane;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="130" y="580" width="370" height="270" as="geometry" />
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-15" value="Insert in storage" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="160" y="890" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="uElckABoOOLrMIv7inX9-17" value="Notify passive<br>fetch(es)" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="350" y="890" width="120" height="40" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>