bdee12f4e9
Replace ASCII-art diagrams across the README and docs/ with editable .drawio sources plus exported PNGs, so the diagrams render clearly in rendered markdown and can be maintained/regenerated instead of being hand-edited as fragile text art. Non-diagram blocks (code, folder trees, UI wireframes) were left as text.
42 lines
2.7 KiB
Plaintext
42 lines
2.7 KiB
Plaintext
<mxfile host="app.diagrams.net">
|
|
<diagram id="channelbridge" name="Channel Bridging">
|
|
<mxGraphModel dx="1000" dy="700" grid="1" gridSize="10" guides="1" arrows="1"
|
|
fold="1" page="1" pageScale="1" pageWidth="900" pageHeight="640" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0" />
|
|
<mxCell id="1" parent="0" />
|
|
|
|
<!-- Producer side: Akka Actor Thread(s) -->
|
|
<mxCell id="akka" value="Akka Actor Thread(s)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;fontSize=13;fontStyle=1;" vertex="1" parent="1">
|
|
<mxGeometry x="80" y="60" width="240" height="60" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- Consumer side: gRPC Response Stream -->
|
|
<mxCell id="grpc" value="gRPC Response Stream" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=13;fontStyle=1;" vertex="1" parent="1">
|
|
<mxGeometry x="560" y="60" width="240" height="60" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- Channel box -->
|
|
<mxCell id="channel" value="Channel<SiteStreamEvent> BoundedChannelOptions(1000) FullMode = DropOldest" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=13;fontStyle=1;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="240" y="280" width="400" height="120" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- Producer writes into channel -->
|
|
<mxCell id="write" value="channel.Writer.TryWrite(evt)" style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;rounded=0;fontSize=12;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="akka" target="channel">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- Channel read out to gRPC stream -->
|
|
<mxCell id="read" value="await responseStream.WriteAsync(evt)" style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;rounded=0;fontSize=12;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="channel" target="grpc">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- Notes -->
|
|
<mxCell id="note" value="• Bounded capacity (1000): prevents unbounded memory growth if the gRPC client is slow • DropOldest: matches the existing SiteStreamManager overflow strategy • ReadAllAsync: yields items as they arrive, naturally async" style="text;html=1;align=left;verticalAlign=middle;fontSize=11;fontColor=#666666;spacingLeft=4;" vertex="1" parent="1">
|
|
<mxGeometry x="80" y="450" width="720" height="80" as="geometry" />
|
|
</mxCell>
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
</mxfile>
|