forked from lavina/lavina
1
0
Fork 0
lavina/docs/lavina-concept-map.drawio

186 lines
14 KiB
Plaintext

<mxfile host="Electron" modified="2024-04-06T13:09:04.675Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.6.8 Chrome/114.0.5735.289 Electron/25.5.0 Safari/537.36" etag="qtPu2_DzKaLY6sI-tH9P" version="21.6.8" type="device">
<diagram name="Page-1" id="nZtLUrlbBAqduTWwrSIR">
<mxGraphModel dx="2034" dy="1953" 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="pe1hktWt-6-3Kgrw7cIj-1" value="Room" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="360" y="200" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-3" value="membership&lt;br&gt;N to N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-2" target="pe1hktWt-6-3Kgrw7cIj-1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-18" value="N to 1" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-2" target="pe1hktWt-6-3Kgrw7cIj-17">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-2" value="Player" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="80" y="200" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-4" value="RoomId&lt;br&gt;&lt;font style=&quot;font-size: 7px;&quot;&gt;cluster-global, public, stable room identifier&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="370" y="340" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-5" value="PersistenceId&lt;br&gt;&lt;font style=&quot;font-size: 7px;&quot;&gt;node-local, private room identifier in the database&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="370" y="280" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-6" value="PlayerId&lt;br&gt;&lt;font style=&quot;font-size: 7px;&quot;&gt;cluster-global, public, stable room identifier&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="87" y="280" width="106" height="50" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-8" value="belongs to&lt;br&gt;N to 1" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-7" target="pe1hktWt-6-3Kgrw7cIj-1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-7" value="Message" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="310" y="60" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-9" value="author of&lt;br&gt;1 to N" style="endArrow=none;html=1;rounded=0;endFill=0;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-2" target="pe1hktWt-6-3Kgrw7cIj-7">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="320" y="190" as="sourcePoint" />
<mxPoint x="370" y="140" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-12" value="N to 1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-11" target="pe1hktWt-6-3Kgrw7cIj-2">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-11" value="Session&lt;br&gt;&lt;font style=&quot;font-size: 7px;&quot;&gt;Created for each successful authentication&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" vertex="1" parent="1">
<mxGeometry x="-160" y="200" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-14" value="N to 1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-13" target="pe1hktWt-6-3Kgrw7cIj-11">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-13" value="Connection&lt;br&gt;&lt;font style=&quot;font-size: 7px;&quot;&gt;An open TCP with successful session authentication. At most one active per session&amp;nbsp;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" vertex="1" parent="1">
<mxGeometry x="-360" y="200" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-15" value="Multi-user chat (MUC)&lt;br&gt;&lt;font style=&quot;font-size: 7px;&quot;&gt;e.g. flood@rooms.lavina&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="-50" y="580" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-16" value="" style="endArrow=classic;html=1;rounded=0;dashed=1;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-15" target="pe1hktWt-6-3Kgrw7cIj-1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-130" y="430" as="sourcePoint" />
<mxPoint x="-80" y="380" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-17" value="Contact&lt;br&gt;&lt;font style=&quot;font-size: 7px;&quot;&gt;Stored player-private contacts of other players&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" vertex="1" parent="1">
<mxGeometry x="10" y="60" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-35" value="Resource&lt;br&gt;&lt;font style=&quot;font-size: 7px;&quot;&gt;Given by the server&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" vertex="1" parent="1">
<mxGeometry x="-290" y="510" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-37" value="" style="endArrow=classic;html=1;rounded=0;dashed=1;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-35" target="pe1hktWt-6-3Kgrw7cIj-11">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="52" y="590" as="sourcePoint" />
<mxPoint x="398" y="270" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-38" value="XMPP Connection" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="-473" y="510" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-39" value="" style="endArrow=classic;html=1;rounded=0;dashed=1;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-38" target="pe1hktWt-6-3Kgrw7cIj-13">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-240" y="460" as="sourcePoint" />
<mxPoint x="-190" y="410" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-40" value="User&lt;br&gt;&lt;font style=&quot;font-size: 7px;&quot;&gt;e.g. ivan@lavina&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="-380" y="630" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-41" value="" style="endArrow=none;html=1;rounded=0;endFill=0;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-40" target="pe1hktWt-6-3Kgrw7cIj-38">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-240" y="390" as="sourcePoint" />
<mxPoint x="-190" y="340" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-42" value="" style="endArrow=none;html=1;rounded=0;endFill=0;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-40" target="pe1hktWt-6-3Kgrw7cIj-15">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-240" y="390" as="sourcePoint" />
<mxPoint x="-190" y="340" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-43" value="" style="endArrow=none;html=1;rounded=0;endFill=0;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-35" target="pe1hktWt-6-3Kgrw7cIj-38">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-170" y="400" as="sourcePoint" />
<mxPoint x="-120" y="350" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-44" value="Username&lt;br&gt;&lt;font style=&quot;font-size: 7px;&quot;&gt;Part before @ in JID&lt;br&gt;e.g. ivan&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="-373" y="700" width="106" height="50" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-45" value="" style="endArrow=classic;html=1;rounded=0;dashed=1;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-40" target="pe1hktWt-6-3Kgrw7cIj-2">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-230" y="510" as="sourcePoint" />
<mxPoint x="-180" y="460" as="targetPoint" />
<Array as="points">
<mxPoint x="-160" y="570" />
<mxPoint x="40" y="280" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-46" value="" style="endArrow=classic;html=1;rounded=0;dashed=1;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-44" target="pe1hktWt-6-3Kgrw7cIj-6">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-230" y="470" as="sourcePoint" />
<mxPoint x="-180" y="420" as="targetPoint" />
<Array as="points">
<mxPoint x="-190" y="670" />
<mxPoint x="60" y="320" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-47" value="Name&lt;br&gt;&lt;font style=&quot;font-size: 7px;&quot;&gt;Part before @ in jid&lt;br&gt;e.g. flood&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="-43" y="650" width="106" height="50" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-49" value="IRC Connection" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="-473" y="-290" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-50" value="" style="endArrow=classic;html=1;rounded=0;dashed=1;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-49" target="pe1hktWt-6-3Kgrw7cIj-13">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-210" y="90" as="sourcePoint" />
<mxPoint x="-160" y="40" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-51" value="Username" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="-230" y="-240" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-52" value="Nickname" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="-230" y="-310" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-53" value="Realname" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="-230" y="-170" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-54" value="" style="endArrow=classic;html=1;rounded=0;dashed=1;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-52" target="pe1hktWt-6-3Kgrw7cIj-6">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-160" y="10" as="sourcePoint" />
<mxPoint x="-110" y="-40" as="targetPoint" />
<Array as="points">
<mxPoint x="-70" y="-250" />
<mxPoint x="10" y="300" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-55" value="" style="endArrow=classic;html=1;rounded=0;dashed=1;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-47" target="pe1hktWt-6-3Kgrw7cIj-4">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="170" y="440" as="sourcePoint" />
<mxPoint x="220" y="390" as="targetPoint" />
<Array as="points">
<mxPoint x="80" y="650" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-56" value="Channel&lt;br&gt;&lt;font style=&quot;font-size: 7px;&quot;&gt;e.g. #flood&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry y="-315" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-58" value="Name&lt;br&gt;&lt;font style=&quot;font-size: 7px;&quot;&gt;part after #&lt;br&gt;e.g. flood&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="10" y="-240" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="pe1hktWt-6-3Kgrw7cIj-59" value="" style="endArrow=classic;html=1;rounded=0;dashed=1;" edge="1" parent="1" source="pe1hktWt-6-3Kgrw7cIj-58" target="pe1hktWt-6-3Kgrw7cIj-4">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-20" y="30" as="sourcePoint" />
<mxPoint x="30" y="-20" as="targetPoint" />
<Array as="points">
<mxPoint x="130" y="-190" />
<mxPoint x="350" y="340" />
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>