diff --git a/docs/pipeline.svg b/docs/pipeline.svg new file mode 100644 index 0000000..5afef95 --- /dev/null +++ b/docs/pipeline.svg @@ -0,0 +1,1118 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Do not edit this file with editors other than draw.io --> + +<svg + xmlns:xhtml="http://www.w3.org/1999/xhtml" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + width="468px" + height="781px" + viewBox="-0.5 -0.5 468 781" + content="<mxfile host="app.diagrams.net" modified="2024-02-21T10:19:43.318Z" agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0" etag="3RYPZeQO7b2vEK5JQqVg" version="22.1.21" type="device"> + <diagram id="psuYNR6WICL4JRO1R1Tc" name="Page-1"> + <mxGraphModel dx="1500" dy="803" 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="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="A10f_WsJXjb-b3dsMaPm-1" value="&lt;div&gt;queueReader&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="160" y="240" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-2" value="distributor" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="160" y="480" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-3" value="handler" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="160" y="720" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-4" value="collector" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="160" y="840" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-5" value="&lt;div&gt;notifier&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="160" y="960" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-6" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="A10f_WsJXjb-b3dsMaPm-1" target="YC3l0LmB9zPU9y-mCtJU-9" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="270" y="650" as="sourcePoint" /> + <mxPoint x="220" y="270" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-13" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="A10f_WsJXjb-b3dsMaPm-2" target="A10f_WsJXjb-b3dsMaPm-19" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="280" y="720" as="sourcePoint" /> + <mxPoint x="330" y="670" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-14" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="A10f_WsJXjb-b3dsMaPm-3" target="A10f_WsJXjb-b3dsMaPm-4" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="280" y="840" as="sourcePoint" /> + <mxPoint x="330" y="790" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-15" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="A10f_WsJXjb-b3dsMaPm-4" target="A10f_WsJXjb-b3dsMaPm-5" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="280" y="840" as="sourcePoint" /> + <mxPoint x="330" y="790" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-16" value="put(jobid, jobspec)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="220" y="310" width="130" height="30" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-17" value="put(jobid, jobspec)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="220" y="680" width="130" height="30" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-18" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="A10f_WsJXjb-b3dsMaPm-4" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="220" y="680" as="sourcePoint" /> + <mxPoint x="330" y="670" as="targetPoint" /> + <Array as="points"> + <mxPoint x="120" y="680" /> + <mxPoint x="120" y="870" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-19" value="handler wants?" style="rhombus;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="180" y="580" width="80" height="80" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-21" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="A10f_WsJXjb-b3dsMaPm-19" target="A10f_WsJXjb-b3dsMaPm-3" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="280" y="720" as="sourcePoint" /> + <mxPoint x="330" y="670" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-22" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="A10f_WsJXjb-b3dsMaPm-19" target="A10f_WsJXjb-b3dsMaPm-5" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="160" y="640" as="sourcePoint" /> + <mxPoint x="330" y="670" as="targetPoint" /> + <Array as="points"> + <mxPoint y="620" /> + <mxPoint y="975" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-23" value="put_pending(jobid, action)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="10" y="650" width="190" height="30" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-24" value="error" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="80" y="940" width="50" height="40" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-25" value="put_done(jobid, action, package)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="220" y="800" width="220" height="30" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-26" value="yes" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="210" y="650" width="60" height="30" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-27" value="invalid" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="120" y="590" width="60" height="30" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-28" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" parent="1" vertex="1"> + <mxGeometry x="350" y="610" width="20" height="20" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-29" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="A10f_WsJXjb-b3dsMaPm-19" target="A10f_WsJXjb-b3dsMaPm-28" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="360" y="560" as="sourcePoint" /> + <mxPoint x="330" y="620" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-31" value="no" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="250" y="590" width="60" height="30" as="geometry" /> + </mxCell> + <mxCell id="A10f_WsJXjb-b3dsMaPm-33" value="notify done" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="220" y="915" width="80" height="30" as="geometry" /> + </mxCell> + <mxCell id="YC3l0LmB9zPU9y-mCtJU-2" value="put(jobid, jobspec)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="220" y="430" width="130" height="30" as="geometry" /> + </mxCell> + <mxCell id="YC3l0LmB9zPU9y-mCtJU-6" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="YC3l0LmB9zPU9y-mCtJU-9" target="A10f_WsJXjb-b3dsMaPm-2" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="220" y="330" as="sourcePoint" /> + <mxPoint x="350" y="290" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="YC3l0LmB9zPU9y-mCtJU-9" value="preprocessor" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="160" y="370" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="YC3l0LmB9zPU9y-mCtJU-12" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="YC3l0LmB9zPU9y-mCtJU-9" target="A10f_WsJXjb-b3dsMaPm-5" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="60" y="290" as="sourcePoint" /> + <mxPoint x="80" y="500" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-10" y="400" /> + <mxPoint x="-10" y="990" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="YC3l0LmB9zPU9y-mCtJU-13" value="invalid" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="100" y="370" width="60" height="30" as="geometry" /> + </mxCell> + <mxCell id="YC3l0LmB9zPU9y-mCtJU-16" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="A10f_WsJXjb-b3dsMaPm-1" target="A10f_WsJXjb-b3dsMaPm-5" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="120" y="320" as="sourcePoint" /> + <mxPoint x="120" y="1035" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-20" y="270" /> + <mxPoint x="-20" y="1005" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="YC3l0LmB9zPU9y-mCtJU-17" value="invalid" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="100" y="240" width="60" height="30" as="geometry" /> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile> +" + id="svg212" + sodipodi:docname="pipeline.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + <metadata + id="metadata216"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="3820" + inkscape:window-height="2103" + id="namedview214" + showgrid="false" + inkscape:zoom="3.4187391" + inkscape:cx="284.5315" + inkscape:cy="462.79451" + inkscape:window-x="10" + inkscape:window-y="10" + inkscape:window-maximized="1" + inkscape:current-layer="svg212" /> + <defs + id="defs2" /> + <g + id="g202"> + <rect + x="187" + y="0" + width="120" + height="60" + fill="rgb(255, 255, 255)" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect4" /> + <g + transform="translate(-0.5 -0.5)" + id="g10"> + <switch + id="switch8"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 30px; margin-left: 188px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:div>queueReader</xhtml:div> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="247" + y="34" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text6">queueReader</text> + </switch> + </g> + <rect + x="187" + y="240" + width="120" + height="60" + fill="rgb(255, 255, 255)" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect12" /> + <g + transform="translate(-0.5 -0.5)" + id="g18"> + <switch + id="switch16"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 270px; margin-left: 188px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">distributor</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="247" + y="274" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text14">distributor</text> + </switch> + </g> + <rect + x="187" + y="480" + width="120" + height="60" + fill="rgb(255, 255, 255)" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect20" /> + <g + transform="translate(-0.5 -0.5)" + id="g26"> + <switch + id="switch24"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 510px; margin-left: 188px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">handler</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="247" + y="514" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text22">handler</text> + </switch> + </g> + <rect + x="187" + y="600" + width="120" + height="60" + fill="rgb(255, 255, 255)" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect28" /> + <g + transform="translate(-0.5 -0.5)" + id="g34"> + <switch + id="switch32"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 630px; margin-left: 188px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">collector</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="247" + y="634" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text30">collector</text> + </switch> + </g> + <rect + x="187" + y="720" + width="120" + height="60" + fill="rgb(255, 255, 255)" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect36" /> + <g + transform="translate(-0.5 -0.5)" + id="g42"> + <switch + id="switch40"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 750px; margin-left: 188px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:div>notifier</xhtml:div> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="247" + y="754" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text38">notifier</text> + </switch> + </g> + <path + d="M 247 60 L 247 123.63" + fill="none" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="stroke" + id="path44" /> + <path + d="M 247 128.88 L 243.5 121.88 L 247 123.63 L 250.5 121.88 Z" + fill="rgb(0, 0, 0)" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="all" + id="path46" /> + <path + d="M 247 300 L 247 333.63" + fill="none" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="stroke" + id="path48" /> + <path + d="M 247 338.88 L 243.5 331.88 L 247 333.63 L 250.5 331.88 Z" + fill="rgb(0, 0, 0)" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="all" + id="path50" /> + <path + d="M 247 540 L 247 593.63" + fill="none" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="stroke" + id="path52" /> + <path + d="M 247 598.88 L 243.5 591.88 L 247 593.63 L 250.5 591.88 Z" + fill="rgb(0, 0, 0)" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="all" + id="path54" /> + <path + d="M 247 660 L 247 713.63" + fill="none" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="stroke" + id="path56" /> + <path + d="M 247 718.88 L 243.5 711.88 L 247 713.63 L 250.5 711.88 Z" + fill="rgb(0, 0, 0)" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="all" + id="path58" /> + <rect + x="247" + y="70" + width="130" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect60" /> + <g + transform="translate(-0.5 -0.5)" + id="g66"> + <switch + id="switch64"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 85px; margin-left: 248px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">put(jobid, jobspec)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="312" + y="89" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text62">put(jobid, jobspec)</text> + </switch> + </g> + <rect + x="247" + y="440" + width="130" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect68" /> + <g + transform="translate(-0.5 -0.5)" + id="g74"> + <switch + id="switch72"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 455px; margin-left: 248px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">put(jobid, jobspec)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="312" + y="459" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text70">put(jobid, jobspec)</text> + </switch> + </g> + <path + d="M 247 440 L 147 440 L 147 630 L 180.63 630" + fill="none" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="stroke" + id="path76" /> + <path + d="M 185.88 630 L 178.88 633.5 L 180.63 630 L 178.88 626.5 Z" + fill="rgb(0, 0, 0)" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="all" + id="path78" /> + <path + d="M 247 340 L 287 380 L 247 420 L 207 380 Z" + fill="rgb(255, 255, 255)" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="all" + id="path80" /> + <path + d="M 247 420 L 247 473.63" + fill="none" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="stroke" + id="path88" /> + <path + d="M 247 478.88 L 243.5 471.88 L 247 473.63 L 250.5 471.88 Z" + fill="rgb(0, 0, 0)" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="all" + id="path90" /> + <path + d="M 207 380 L 27 380 L 27 735 L 180.63 735" + fill="none" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="stroke" + id="path92" /> + <path + d="M 185.88 735 L 178.88 738.5 L 180.63 735 L 178.88 731.5 Z" + fill="rgb(0, 0, 0)" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="all" + id="path94" /> + <rect + x="37" + y="410" + width="190" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect96" /> + <g + transform="translate(-0.5 -0.5)" + id="g102"> + <switch + id="switch100"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 425px; margin-left: 38px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">put_pending(jobid, action)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="132" + y="429" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text98">put_pending(jobid, action)</text> + </switch> + </g> + <rect + x="107" + y="700" + width="50" + height="40" + fill="none" + stroke="none" + pointer-events="all" + id="rect104" /> + <g + transform="translate(-0.5 -0.5)" + id="g110"> + <switch + id="switch108"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 48px; height: 1px; padding-top: 720px; margin-left: 109px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: left;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">error</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="109" + y="724" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + id="text106">error</text> + </switch> + </g> + <rect + x="247" + y="560" + width="220" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect112" /> + <g + transform="translate(-0.5 -0.5)" + id="g118"> + <switch + id="switch116"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 575px; margin-left: 248px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">put_done(jobid, action, package)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="357" + y="579" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text114">put_done(jobid, action, package)</text> + </switch> + </g> + <rect + x="237" + y="410" + width="60" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect120" /> + <g + transform="translate(-0.5 -0.5)" + id="g126"> + <switch + id="switch124"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 425px; margin-left: 238px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">yes</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="267" + y="429" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text122">yes</text> + </switch> + </g> + <rect + x="147" + y="350" + width="60" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect128" /> + <g + transform="translate(-0.5 -0.5)" + id="g134"> + <switch + id="switch132"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 365px; margin-left: 148px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">invalid</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="177" + y="369" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text130">invalid</text> + </switch> + </g> + <ellipse + cx="387" + cy="380" + rx="10" + ry="10" + fill="rgb(255, 255, 255)" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="ellipse136" /> + <path + d="M 287 380 L 370.63 380" + fill="none" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="stroke" + id="path138" /> + <path + d="M 375.88 380 L 368.88 383.5 L 370.63 380 L 368.88 376.5 Z" + fill="rgb(0, 0, 0)" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="all" + id="path140" /> + <rect + x="277" + y="350" + width="60" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect142" /> + <g + transform="translate(-0.5 -0.5)" + id="g148"> + <switch + id="switch146"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 365px; margin-left: 278px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">no</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="307" + y="369" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text144">no</text> + </switch> + </g> + <rect + x="247" + y="675" + width="80" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect150" /> + <g + transform="translate(-0.5 -0.5)" + id="g156"> + <switch + id="switch154"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 690px; margin-left: 248px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">notify done</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="287" + y="694" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text152">notify done</text> + </switch> + </g> + <rect + x="247" + y="190" + width="130" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect158" /> + <g + transform="translate(-0.5 -0.5)" + id="g164"> + <switch + id="switch162"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 205px; margin-left: 248px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">put(jobid, jobspec)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="312" + y="209" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text160">put(jobid, jobspec)</text> + </switch> + </g> + <path + d="M 247 190 L 247 233.63" + fill="none" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="stroke" + id="path166" /> + <path + d="M 247 238.88 L 243.5 231.88 L 247 233.63 L 250.5 231.88 Z" + fill="rgb(0, 0, 0)" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="all" + id="path168" /> + <rect + x="187" + y="130" + width="120" + height="60" + fill="rgb(255, 255, 255)" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect170" /> + <g + transform="translate(-0.5 -0.5)" + id="g176"> + <switch + id="switch174"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 160px; margin-left: 188px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">preprocessor</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="247" + y="164" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text172">preprocessor</text> + </switch> + </g> + <path + d="M 187 160 L 17 160 L 17 750 L 180.63 750" + fill="none" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="stroke" + id="path178" /> + <path + d="M 185.88 750 L 178.88 753.5 L 180.63 750 L 178.88 746.5 Z" + fill="rgb(0, 0, 0)" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="all" + id="path180" /> + <rect + x="127" + y="130" + width="60" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect182" /> + <g + transform="translate(-0.5 -0.5)" + id="g188"> + <switch + id="switch186"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 145px; margin-left: 128px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">invalid</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="157" + y="149" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text184">invalid</text> + </switch> + </g> + <path + d="M 187 30 L 7 30 L 7 765 L 180.63 765" + fill="none" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="stroke" + id="path190" /> + <path + d="M 185.88 765 L 178.88 768.5 L 180.63 765 L 178.88 761.5 Z" + fill="rgb(0, 0, 0)" + stroke="rgb(0, 0, 0)" + stroke-miterlimit="10" + pointer-events="all" + id="path192" /> + <rect + x="127" + y="0" + width="60" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect194" /> + <g + transform="translate(-0.5 -0.5)" + id="g200"> + <switch + id="switch198"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 15px; margin-left: 128px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">invalid</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="157" + y="19" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text196">invalid</text> + </switch> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.9507103px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.27376774px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="227.11911" + y="376.41714" + id="text4730"><tspan + sodipodi:role="line" + id="tspan4728" + x="227.11911" + y="376.41714" + style="stroke-width:0.27376774px">handler</tspan><tspan + sodipodi:role="line" + x="227.11911" + y="390.10553" + id="tspan4732" + style="stroke-width:0.27376774px">wants?</tspan></text> + </g> +</svg>