517 lines
13 KiB
XML
517 lines
13 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
<svg
|
|
width="1400"
|
|
height="820"
|
|
viewBox="0 0 1400 820"
|
|
version="1.1"
|
|
id="svg34"
|
|
sodipodi:docname="rktwebview-shared-memory-diagram-simple.svg"
|
|
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
|
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
xmlns:svg="http://www.w3.org/2000/svg">
|
|
<defs
|
|
id="defs34">
|
|
<marker
|
|
style="overflow:visible"
|
|
id="marker49"
|
|
refX="0"
|
|
refY="0"
|
|
orient="auto-start-reverse"
|
|
inkscape:stockid="Triangle arrow"
|
|
markerWidth="1"
|
|
markerHeight="1"
|
|
viewBox="0 0 1 1"
|
|
inkscape:isstock="true"
|
|
inkscape:collect="always"
|
|
preserveAspectRatio="xMidYMid">
|
|
<path
|
|
transform="scale(0.5)"
|
|
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
|
d="M 5.77,0 -2.88,5 V -5 Z"
|
|
id="path49" />
|
|
</marker>
|
|
<marker
|
|
style="overflow:visible"
|
|
id="marker48"
|
|
refX="0"
|
|
refY="0"
|
|
orient="auto-start-reverse"
|
|
inkscape:stockid="Triangle arrow"
|
|
markerWidth="1"
|
|
markerHeight="1"
|
|
viewBox="0 0 1 1"
|
|
inkscape:isstock="true"
|
|
inkscape:collect="always"
|
|
preserveAspectRatio="xMidYMid">
|
|
<path
|
|
transform="scale(0.5)"
|
|
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
|
d="M 5.77,0 -2.88,5 V -5 Z"
|
|
id="path48" />
|
|
</marker>
|
|
<marker
|
|
style="overflow:visible"
|
|
id="marker45"
|
|
refX="0"
|
|
refY="0"
|
|
orient="auto-start-reverse"
|
|
inkscape:stockid="Triangle arrow"
|
|
markerWidth="1"
|
|
markerHeight="1"
|
|
viewBox="0 0 1 1"
|
|
inkscape:isstock="true"
|
|
inkscape:collect="always"
|
|
preserveAspectRatio="xMidYMid">
|
|
<path
|
|
transform="scale(0.5)"
|
|
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
|
d="M 5.77,0 -2.88,5 V -5 Z"
|
|
id="path45" />
|
|
</marker>
|
|
<marker
|
|
style="overflow:visible"
|
|
id="Triangle"
|
|
refX="0"
|
|
refY="0"
|
|
orient="auto-start-reverse"
|
|
inkscape:stockid="Triangle arrow"
|
|
markerWidth="1"
|
|
markerHeight="1"
|
|
viewBox="0 0 1 1"
|
|
inkscape:isstock="true"
|
|
inkscape:collect="always"
|
|
preserveAspectRatio="xMidYMid">
|
|
<path
|
|
transform="scale(0.5)"
|
|
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
|
d="M 5.77,0 -2.88,5 V -5 Z"
|
|
id="path135" />
|
|
</marker>
|
|
<marker
|
|
style="overflow:visible"
|
|
id="marker40"
|
|
refX="0"
|
|
refY="0"
|
|
orient="auto-start-reverse"
|
|
inkscape:stockid="Triangle arrow"
|
|
markerWidth="1"
|
|
markerHeight="1"
|
|
viewBox="0 0 1 1"
|
|
inkscape:isstock="true"
|
|
inkscape:collect="always"
|
|
preserveAspectRatio="xMidYMid">
|
|
<path
|
|
transform="scale(0.5)"
|
|
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
|
d="M 5.77,0 -2.88,5 V -5 Z"
|
|
id="path40" />
|
|
</marker>
|
|
<marker
|
|
style="overflow:visible"
|
|
id="marker38"
|
|
refX="0"
|
|
refY="0"
|
|
orient="auto-start-reverse"
|
|
inkscape:stockid="Triangle arrow"
|
|
markerWidth="1"
|
|
markerHeight="1"
|
|
viewBox="0 0 1 1"
|
|
inkscape:isstock="true"
|
|
inkscape:collect="always"
|
|
preserveAspectRatio="xMidYMid">
|
|
<path
|
|
transform="scale(0.5)"
|
|
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
|
d="M 5.77,0 -2.88,5 V -5 Z"
|
|
id="path38" />
|
|
</marker>
|
|
</defs>
|
|
<sodipodi:namedview
|
|
id="namedview34"
|
|
pagecolor="#ffffff"
|
|
bordercolor="#000000"
|
|
borderopacity="0.25"
|
|
inkscape:showpageshadow="2"
|
|
inkscape:pageopacity="0.0"
|
|
inkscape:pagecheckerboard="0"
|
|
inkscape:deskcolor="#d1d1d1"
|
|
inkscape:zoom="0.78374771"
|
|
inkscape:cx="729.82669"
|
|
inkscape:cy="468.90089"
|
|
inkscape:window-width="1920"
|
|
inkscape:window-height="1129"
|
|
inkscape:window-x="-8"
|
|
inkscape:window-y="-8"
|
|
inkscape:window-maximized="1"
|
|
inkscape:current-layer="svg34" />
|
|
<rect
|
|
x="0"
|
|
y="0"
|
|
width="1400"
|
|
height="820"
|
|
fill="#ffffff"
|
|
id="rect1" />
|
|
<!-- Title -->
|
|
<rect
|
|
x="292.14935"
|
|
y="50.869148"
|
|
width="807.46985"
|
|
height="69.175186"
|
|
fill="#4b7fda"
|
|
stroke="#000000"
|
|
stroke-width="2.82481"
|
|
id="rect2"
|
|
ry="14.206594"
|
|
rx="26.788099" />
|
|
<text
|
|
x="693.3324"
|
|
y="95.456741"
|
|
font-family="Arial"
|
|
font-size="30px"
|
|
font-weight="bold"
|
|
text-anchor="middle"
|
|
fill="#ffffff"
|
|
id="text2">Shared Memory</text>
|
|
<!-- Shared memory block -->
|
|
<rect
|
|
x="298.4361"
|
|
y="138.76608"
|
|
width="800"
|
|
height="600"
|
|
fill="#efefef"
|
|
stroke="#000000"
|
|
stroke-width="2"
|
|
id="rect3" />
|
|
<!-- Allocator -->
|
|
<g
|
|
id="g36"
|
|
transform="translate(-1.5639013,-1.2339131)">
|
|
<g
|
|
id="g34"
|
|
transform="translate(-24.328594,-25.434439)">
|
|
<rect
|
|
x="350"
|
|
y="185"
|
|
width="240"
|
|
height="60"
|
|
fill="#d8d8d8"
|
|
stroke="#000000"
|
|
stroke-width="2"
|
|
id="rect4"
|
|
ry="11.058452"
|
|
rx="12.164297" />
|
|
</g>
|
|
<text
|
|
x="445.67142"
|
|
y="197.56557"
|
|
font-family="Arial"
|
|
font-size="24px"
|
|
font-weight="bold"
|
|
text-anchor="middle"
|
|
id="text4">Allocator</text>
|
|
</g>
|
|
<text
|
|
x="311.94321"
|
|
y="237.80243"
|
|
font-family="Arial"
|
|
font-size="16px"
|
|
id="text5">free list, slot table, allocation headers</text>
|
|
<!-- Queues -->
|
|
<rect
|
|
x="633.4361"
|
|
y="183.76608"
|
|
width="395"
|
|
height="54"
|
|
fill="#f0bc23"
|
|
stroke="#000000"
|
|
stroke-width="2"
|
|
id="rect5" />
|
|
<rect
|
|
x="633.4361"
|
|
y="237.76608"
|
|
width="395"
|
|
height="50"
|
|
fill="#fbf6df"
|
|
stroke="#000000"
|
|
stroke-width="2"
|
|
id="rect6" />
|
|
<text
|
|
x="830.4361"
|
|
y="218.76608"
|
|
font-family="Arial"
|
|
font-size="24px"
|
|
font-weight="bold"
|
|
text-anchor="middle"
|
|
id="text6">Command Queue</text>
|
|
<text
|
|
x="830.4361"
|
|
y="269.76608"
|
|
font-family="Arial"
|
|
font-size="18px"
|
|
text-anchor="middle"
|
|
id="text7">command payloads</text>
|
|
<rect
|
|
x="633.4361"
|
|
y="348.76608"
|
|
width="395"
|
|
height="54"
|
|
fill="#71b53b"
|
|
stroke="#000000"
|
|
stroke-width="2"
|
|
id="rect7" />
|
|
<rect
|
|
x="633.4361"
|
|
y="402.76608"
|
|
width="395"
|
|
height="50"
|
|
fill="#edf5e0"
|
|
stroke="#000000"
|
|
stroke-width="2"
|
|
id="rect8" />
|
|
<text
|
|
x="830.4361"
|
|
y="383.76608"
|
|
font-family="Arial"
|
|
font-size="24px"
|
|
font-weight="bold"
|
|
text-anchor="middle"
|
|
fill="#ffffff"
|
|
id="text8">Result Queue</text>
|
|
<text
|
|
x="830.4361"
|
|
y="434.76608"
|
|
font-family="Arial"
|
|
font-size="18px"
|
|
text-anchor="middle"
|
|
id="text9">result payloads</text>
|
|
<rect
|
|
x="633.4361"
|
|
y="513.76611"
|
|
width="395"
|
|
height="54"
|
|
fill="#e56a0b"
|
|
stroke="#000000"
|
|
stroke-width="2"
|
|
id="rect9" />
|
|
<rect
|
|
x="633.4361"
|
|
y="567.76611"
|
|
width="395"
|
|
height="50"
|
|
fill="#fae9dd"
|
|
stroke="#000000"
|
|
stroke-width="2"
|
|
id="rect10" />
|
|
<text
|
|
x="830.4361"
|
|
y="548.76611"
|
|
font-family="Arial"
|
|
font-size="24px"
|
|
font-weight="bold"
|
|
text-anchor="middle"
|
|
fill="#ffffff"
|
|
id="text10">Event Queue</text>
|
|
<text
|
|
x="830.4361"
|
|
y="599.76611"
|
|
font-family="Arial"
|
|
font-size="18px"
|
|
text-anchor="middle"
|
|
id="text11">event payloads</text>
|
|
<!-- Payload label -->
|
|
<text
|
|
x="698.4361"
|
|
y="673.76611"
|
|
font-family="Arial"
|
|
font-size="24px"
|
|
font-weight="bold"
|
|
text-anchor="middle"
|
|
fill="#555555"
|
|
id="text12">Payloads in Shared Memory</text>
|
|
<line
|
|
x1="388.4361"
|
|
y1="686.76611"
|
|
x2="1008.4361"
|
|
y2="686.76611"
|
|
stroke="#888888"
|
|
stroke-width="2"
|
|
id="line12" />
|
|
<!-- Left process -->
|
|
<rect
|
|
x="43.653984"
|
|
y="361.71698"
|
|
width="274.56424"
|
|
height="326.83121"
|
|
fill="#ffffff"
|
|
stroke="#000000"
|
|
stroke-width="2"
|
|
id="rect12" />
|
|
<g
|
|
id="g37"
|
|
transform="translate(-1.7755917,-110.71258)">
|
|
<rect
|
|
x="45"
|
|
y="470"
|
|
width="275"
|
|
height="90"
|
|
fill="#e26a10"
|
|
stroke="#000000"
|
|
stroke-width="2"
|
|
id="rect13" />
|
|
<text
|
|
x="182"
|
|
y="525"
|
|
font-family="Arial"
|
|
font-size="28px"
|
|
font-weight="bold"
|
|
text-anchor="middle"
|
|
fill="#ffffff"
|
|
id="text13">Racket Process</text>
|
|
</g>
|
|
<text
|
|
x="101.61144"
|
|
y="514.19263"
|
|
font-family="Arial"
|
|
font-size="22px"
|
|
font-weight="bold"
|
|
id="text14">• Call API (FFI)</text>
|
|
<text
|
|
x="117.09328"
|
|
y="543.13422"
|
|
font-family="Arial"
|
|
font-size="22px"
|
|
font-weight="bold"
|
|
id="text15">• Receive Result</text>
|
|
<text
|
|
x="96.082222"
|
|
y="589.76929"
|
|
font-family="Arial"
|
|
font-size="22px"
|
|
font-weight="bold"
|
|
id="text16">• Poll Events</text>
|
|
<!-- Right process -->
|
|
<g
|
|
id="g44"
|
|
transform="translate(15.023069,-161.99993)">
|
|
<rect
|
|
x="1120"
|
|
y="460"
|
|
width="245"
|
|
height="240"
|
|
fill="#f7f7f8"
|
|
stroke="#000000"
|
|
stroke-width="2"
|
|
id="rect16" />
|
|
<rect
|
|
x="1120"
|
|
y="460"
|
|
width="245"
|
|
height="105"
|
|
fill="#676e7a"
|
|
stroke="#000000"
|
|
stroke-width="2"
|
|
id="rect17" />
|
|
<text
|
|
x="1242"
|
|
y="515"
|
|
font-family="Arial"
|
|
font-size="24px"
|
|
font-weight="bold"
|
|
text-anchor="middle"
|
|
fill="#ffffff"
|
|
id="text17">rktwebview_prg</text>
|
|
<text
|
|
x="1242"
|
|
y="548"
|
|
font-family="Arial"
|
|
font-size="18px"
|
|
text-anchor="middle"
|
|
fill="#ffffff"
|
|
id="text18">(Qt / Chromium)</text>
|
|
<g
|
|
id="g41"
|
|
transform="translate(0,-11.058452)">
|
|
<rect
|
|
x="1152"
|
|
y="590"
|
|
width="180"
|
|
height="48"
|
|
fill="#efdf9b"
|
|
stroke="#000000"
|
|
stroke-width="2"
|
|
id="rect18" />
|
|
<text
|
|
x="1242"
|
|
y="621"
|
|
font-family="Arial"
|
|
font-size="20px"
|
|
font-weight="bold"
|
|
text-anchor="middle"
|
|
id="text19">Command Thread</text>
|
|
</g>
|
|
<g
|
|
id="g42">
|
|
<g
|
|
id="g43"
|
|
transform="translate(0,-10.947309)">
|
|
<rect
|
|
x="1152"
|
|
y="650"
|
|
width="180"
|
|
height="48"
|
|
fill="#efdf9b"
|
|
stroke="#000000"
|
|
stroke-width="2"
|
|
id="rect19" />
|
|
<text
|
|
x="1242"
|
|
y="681"
|
|
font-family="Arial"
|
|
font-size="20px"
|
|
font-weight="bold"
|
|
text-anchor="middle"
|
|
id="text20">Qt GUI Thread</text>
|
|
</g>
|
|
</g>
|
|
</g>
|
|
<!-- Command arrows -->
|
|
<!-- Result arrows right to left -->
|
|
<!-- Event arrows right to left -->
|
|
<!-- Footer -->
|
|
<text
|
|
x="698.4361"
|
|
y="783.76611"
|
|
font-family="Arial"
|
|
font-size="16px"
|
|
text-anchor="middle"
|
|
fill="#555555"
|
|
id="text34">Racket calls the C API through FFI; the helper process consumes commands and produces results and events.</text>
|
|
<path
|
|
style="fill:#000000;stroke:#000000;stroke-width:4.2;stroke-dasharray:none;marker-end:url(#marker38)"
|
|
d="m 638.72046,571.59389 -321.80095,1.10585"
|
|
id="path37"
|
|
sodipodi:nodetypes="cc" />
|
|
<path
|
|
style="fill:none;stroke:#000000;stroke-width:4.1534;stroke-dasharray:none;marker-end:url(#marker40)"
|
|
d="m 635.3126,404.52149 -55.08407,1.10725 -2.16016,128.43983 -260.29922,2.21448"
|
|
id="path39" />
|
|
<path
|
|
style="fill:none;stroke:#000000;stroke-width:4.2;stroke-dasharray:none;marker-end:url(#Triangle)"
|
|
d="M 306.96691,505.24318 H 543.61777 V 261.95724 h 87.36177"
|
|
id="path41" />
|
|
<path
|
|
style="fill:none;stroke:#000000;stroke-width:3.89804;stroke-dasharray:none;marker-end:url(#marker45)"
|
|
d="m 1165.3148,499.58917 h -86.7061 v 77.63074 h -36.8501"
|
|
id="path44" />
|
|
<path
|
|
style="fill:none;stroke:#000000;stroke-width:3.9801;stroke-dasharray:none;marker-end:url(#marker49)"
|
|
d="m 1030.6475,241.07822 h 31.4718 v 189.62297 h 95.6253"
|
|
id="path46" />
|
|
<path
|
|
style="fill:none;stroke:#000000;stroke-width:4.2;stroke-dasharray:none;marker-end:url(#marker48)"
|
|
d="m 1162.0759,452.99389 h -112.2811 v -53.58867 l -18.8137,5.04111"
|
|
id="path47" />
|
|
</svg>
|