diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/protocol.ksy | 126 | ||||
| -rw-r--r-- | docs/protocol.svg | 827 | ||||
| -rw-r--r-- | docs/rfc.html | 164 | ||||
| -rw-r--r-- | docs/rfc.md | 48 | ||||
| -rw-r--r-- | docs/rfc.txt | 56 |
5 files changed, 759 insertions, 462 deletions
diff --git a/docs/protocol.ksy b/docs/protocol.ksy new file mode 100644 index 0000000..169ba18 --- /dev/null +++ b/docs/protocol.ksy @@ -0,0 +1,126 @@ +meta: + id: solec + file-extension: hex + endian: be + +doc: SOLEC protocol +doc-ref: https://git.rctt.net/solec/plain/docs/protocol.svg?h=main + +seq: + - id: type_payload + type: u1 + enum: payload_type + - id: len_payload + type: u2 + - id: payload + size: len_payload + type: + switch-on: type_payload + cases: + 'payload_type::success': success + 'payload_type::error': error + 'payload_type::handshake': handshake + 'payload_type::user_auth': user_auth + 'payload_type::server_auth': server_auth + 'payload_type::message': message + 'payload_type::test': test + +enums: + payload_type: + 0x01: success + 0x02: error + 0x03: handshake + 0x04: user_auth + 0x05: message + 0x06: server_auth + 0xFF: test + + error_type: + 0x01: user_auth_failed + 0x02: not_found + + conn_type: + 0x01: user_conn + 0x02: server_conn + +types: + string: + doc: UTF-8 encoded string. + seq: + - id: len_payload + type: u2 + - id: payload + type: str + size: len_payload + encoding: UTF-8 + + success: + doc: Send from server if operation succeded. + + error: + doc: Senf from server if operation failed. + seq: + - id: error_code + type: u1 + enum: error_type + + handshake: + doc: | + Handshake is sent by the client during connection initialization. + If protocol_ver_major is different than version used by the server + connection will be aborted. + seq: + - id: proto_ver_major + type: u1 + - id: proto_ver_minor + type: u1 + - id: conn_type + type: u1 + enum: conn_type + + user_auth: + seq: + - id: name + type: string + - id: pass + type: string + + server_auth: + seq: + - id: name + type: string + + message: + doc: | + Source and target fields are addresses in user@server format. + seq: + - id: source + type: string + - id: target + type: string + - id: timestamp + doc: Set just before sending the message. + type: u8 + - id: content + type: string + + test: + doc: Test payload, used for parsers testing + seq: + - id: num1 + type: u1 + - id: time1 + type: u8 + - id: str1 + type: string + - id: num2 + type: u2 + - id: str2 + type: string + - id: num3 + type: u4 + - id: str3 + type: string + - id: num4 + type: u8 + diff --git a/docs/protocol.svg b/docs/protocol.svg index 20a9119..b029409 100644 --- a/docs/protocol.svg +++ b/docs/protocol.svg @@ -4,489 +4,542 @@ <!-- Generated by graphviz version 14.1.3 (20260303.0454) --> <!-- Pages: 1 --> -<svg width="1130pt" height="920pt" - viewBox="0.00 0.00 1130.00 920.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> -<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 916)"> -<polygon fill="white" stroke="none" points="-4,4 -4,-916 1125.75,-916 1125.75,4 -4,4"/> +<svg width="1173pt" height="1045pt" + viewBox="0.00 0.00 1173.00 1045.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1041)"> +<polygon fill="white" stroke="none" points="-4,4 -4,-1041 1168.5,-1041 1168.5,4 -4,4"/> <g id="clust1" class="cluster"> <title>cluster__solec</title> -<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="8,-8 8,-904 1113.75,-904 1113.75,-8 8,-8"/> -<text xml:space="preserve" text-anchor="middle" x="560.88" y="-886.7" font-family="Times,serif" font-size="14.00">Solec</text> +<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="8,-8 8,-1029 1156.5,-1029 1156.5,-8 8,-8"/> +<text xml:space="preserve" text-anchor="middle" x="582.25" y="-1011.7" font-family="Times,serif" font-size="14.00">Solec</text> </g> <g id="clust2" class="cluster"> -<title>cluster__auth</title> -<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="621.25,-755 621.25,-871 780,-871 780,-755 621.25,-755"/> -<text xml:space="preserve" text-anchor="middle" x="700.62" y="-853.7" font-family="Times,serif" font-size="14.00">Solec::Auth</text> +<title>cluster__error</title> +<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="607,-902 607,-996 845.25,-996 845.25,-902 607,-902"/> +<text xml:space="preserve" text-anchor="middle" x="726.12" y="-978.7" font-family="Times,serif" font-size="14.00">Solec::Error</text> </g> <g id="clust3" class="cluster"> -<title>cluster__error</title> -<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="581.5,-653 581.5,-747 819.75,-747 819.75,-653 581.5,-653"/> -<text xml:space="preserve" text-anchor="middle" x="700.62" y="-729.7" font-family="Times,serif" font-size="14.00">Solec::Error</text> +<title>cluster__handshake</title> +<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="589.75,-755 589.75,-894 862.5,-894 862.5,-755 589.75,-755"/> +<text xml:space="preserve" text-anchor="middle" x="726.12" y="-876.7" font-family="Times,serif" font-size="14.00">Solec::Handshake</text> </g> <g id="clust4" class="cluster"> -<title>cluster__handshake</title> -<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="595,-529 595,-645 806.25,-645 806.25,-529 595,-529"/> -<text xml:space="preserve" text-anchor="middle" x="700.62" y="-627.7" font-family="Times,serif" font-size="14.00">Solec::Handshake</text> +<title>cluster__message</title> +<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="632.88,-586 632.88,-747 819.38,-747 819.38,-586 632.88,-586"/> +<text xml:space="preserve" text-anchor="middle" x="726.12" y="-729.7" font-family="Times,serif" font-size="14.00">Solec::Message</text> </g> <g id="clust5" class="cluster"> -<title>cluster__message</title> -<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="607.38,-360 607.38,-521 793.88,-521 793.88,-360 607.38,-360"/> -<text xml:space="preserve" text-anchor="middle" x="700.62" y="-503.7" font-family="Times,serif" font-size="14.00">Solec::Message</text> +<title>cluster__server_auth</title> +<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="646.75,-484 646.75,-578 805.5,-578 805.5,-484 646.75,-484"/> +<text xml:space="preserve" text-anchor="middle" x="726.12" y="-560.7" font-family="Times,serif" font-size="14.00">Solec::ServerAuth</text> </g> <g id="clust6" class="cluster"> <title>cluster__string</title> -<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="839.75,-359 839.75,-493 1105.75,-493 1105.75,-359 839.75,-359"/> -<text xml:space="preserve" text-anchor="middle" x="972.75" y="-475.7" font-family="Times,serif" font-size="14.00">Solec::String</text> +<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="882.5,-229 882.5,-363 1148.5,-363 1148.5,-229 882.5,-229"/> +<text xml:space="preserve" text-anchor="middle" x="1015.5" y="-345.7" font-family="Times,serif" font-size="14.00">Solec::String</text> </g> <g id="clust7" class="cluster"> <title>cluster__success</title> -<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="635.88,-275 635.88,-352 765.38,-352 765.38,-275 635.88,-275"/> -<text xml:space="preserve" text-anchor="middle" x="700.62" y="-334.7" font-family="Times,serif" font-size="14.00">Solec::Success</text> +<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="661.38,-399 661.38,-476 790.88,-476 790.88,-399 661.38,-399"/> +<text xml:space="preserve" text-anchor="middle" x="726.12" y="-458.7" font-family="Times,serif" font-size="14.00">Solec::Success</text> </g> <g id="clust8" class="cluster"> <title>cluster__test</title> -<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="620.5,-16 620.5,-267 780.75,-267 780.75,-16 620.5,-16"/> -<text xml:space="preserve" text-anchor="middle" x="700.62" y="-249.7" font-family="Times,serif" font-size="14.00">Solec::Test</text> +<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="646,-140 646,-391 806.25,-391 806.25,-140 646,-140"/> +<text xml:space="preserve" text-anchor="middle" x="726.12" y="-373.7" font-family="Times,serif" font-size="14.00">Solec::Test</text> +</g> +<g id="clust9" class="cluster"> +<title>cluster__user_auth</title> +<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="646.75,-16 646.75,-132 805.5,-132 805.5,-16 646.75,-16"/> +<text xml:space="preserve" text-anchor="middle" x="726.12" y="-114.7" font-family="Times,serif" font-size="14.00">Solec::UserAuth</text> </g> <!-- solec__seq --> <g id="node1" class="node"> <title>solec__seq</title> -<polygon fill="#e0ffe0" stroke="none" points="24,-567.5 24,-590 48.75,-590 48.75,-567.5 24,-567.5"/> -<polygon fill="none" stroke="black" points="24,-567.5 24,-590 48.75,-590 48.75,-567.5 24,-567.5"/> -<text xml:space="preserve" text-anchor="start" x="27" y="-574.25" font-family="Times,serif" font-size="14.00">pos</text> -<polygon fill="#e0ffe0" stroke="none" points="48.75,-567.5 48.75,-590 75.75,-590 75.75,-567.5 48.75,-567.5"/> -<polygon fill="none" stroke="black" points="48.75,-567.5 48.75,-590 75.75,-590 75.75,-567.5 48.75,-567.5"/> -<text xml:space="preserve" text-anchor="start" x="51.75" y="-574.25" font-family="Times,serif" font-size="14.00">size</text> -<polygon fill="#e0ffe0" stroke="none" points="75.75,-567.5 75.75,-590 202.5,-590 202.5,-567.5 75.75,-567.5"/> -<polygon fill="none" stroke="black" points="75.75,-567.5 75.75,-590 202.5,-590 202.5,-567.5 75.75,-567.5"/> -<text xml:space="preserve" text-anchor="start" x="127.5" y="-574.25" font-family="Times,serif" font-size="14.00">type</text> -<polygon fill="#e0ffe0" stroke="none" points="202.5,-567.5 202.5,-590 281.25,-590 281.25,-567.5 202.5,-567.5"/> -<polygon fill="none" stroke="black" points="202.5,-567.5 202.5,-590 281.25,-590 281.25,-567.5 202.5,-567.5"/> -<text xml:space="preserve" text-anchor="start" x="236.62" y="-574.25" font-family="Times,serif" font-size="14.00">id</text> -<polygon fill="none" stroke="black" points="24,-545 24,-567.5 48.75,-567.5 48.75,-545 24,-545"/> -<text xml:space="preserve" text-anchor="start" x="33" y="-551.75" font-family="Times,serif" font-size="14.00">0</text> -<polygon fill="none" stroke="black" points="48.75,-545 48.75,-567.5 75.75,-567.5 75.75,-545 48.75,-545"/> -<text xml:space="preserve" text-anchor="start" x="58.88" y="-551.75" font-family="Times,serif" font-size="14.00">1</text> -<polygon fill="none" stroke="black" points="75.75,-545 75.75,-567.5 202.5,-567.5 202.5,-545 75.75,-545"/> -<text xml:space="preserve" text-anchor="start" x="89.62" y="-551.75" font-family="Times,serif" font-size="14.00">u1→PayloadType</text> -<polygon fill="none" stroke="black" points="202.5,-545 202.5,-567.5 281.25,-567.5 281.25,-545 202.5,-545"/> -<text xml:space="preserve" text-anchor="start" x="205.5" y="-551.75" font-family="Times,serif" font-size="14.00">type_payload</text> -<polygon fill="none" stroke="black" points="24,-522.5 24,-545 48.75,-545 48.75,-522.5 24,-522.5"/> -<text xml:space="preserve" text-anchor="start" x="33" y="-529.25" font-family="Times,serif" font-size="14.00">1</text> -<polygon fill="none" stroke="black" points="48.75,-522.5 48.75,-545 75.75,-545 75.75,-522.5 48.75,-522.5"/> -<text xml:space="preserve" text-anchor="start" x="58.88" y="-529.25" font-family="Times,serif" font-size="14.00">2</text> -<polygon fill="none" stroke="black" points="75.75,-522.5 75.75,-545 202.5,-545 202.5,-522.5 75.75,-522.5"/> -<text xml:space="preserve" text-anchor="start" x="126" y="-529.25" font-family="Times,serif" font-size="14.00">u2be</text> -<polygon fill="none" stroke="black" points="202.5,-522.5 202.5,-545 281.25,-545 281.25,-522.5 202.5,-522.5"/> -<text xml:space="preserve" text-anchor="start" x="208.88" y="-529.25" font-family="Times,serif" font-size="14.00">len_payload</text> -<polygon fill="none" stroke="black" points="24,-500 24,-522.5 48.75,-522.5 48.75,-500 24,-500"/> -<text xml:space="preserve" text-anchor="start" x="33" y="-506.75" font-family="Times,serif" font-size="14.00">3</text> -<polygon fill="none" stroke="black" points="48.75,-500 48.75,-522.5 75.75,-522.5 75.75,-500 48.75,-500"/> -<text xml:space="preserve" text-anchor="start" x="56.62" y="-506.75" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="75.75,-500 75.75,-522.5 202.5,-522.5 202.5,-500 75.75,-500"/> -<text xml:space="preserve" text-anchor="start" x="78.75" y="-506.75" font-family="Times,serif" font-size="14.00">switch (type_payload)</text> -<polygon fill="none" stroke="black" points="202.5,-500 202.5,-522.5 281.25,-522.5 281.25,-500 202.5,-500"/> -<text xml:space="preserve" text-anchor="start" x="220.5" y="-506.75" font-family="Times,serif" font-size="14.00">payload</text> +<polygon fill="#e0ffe0" stroke="none" points="24,-585.5 24,-608 48.75,-608 48.75,-585.5 24,-585.5"/> +<polygon fill="none" stroke="black" points="24,-585.5 24,-608 48.75,-608 48.75,-585.5 24,-585.5"/> +<text xml:space="preserve" text-anchor="start" x="27" y="-592.25" font-family="Times,serif" font-size="14.00">pos</text> +<polygon fill="#e0ffe0" stroke="none" points="48.75,-585.5 48.75,-608 75.75,-608 75.75,-585.5 48.75,-585.5"/> +<polygon fill="none" stroke="black" points="48.75,-585.5 48.75,-608 75.75,-608 75.75,-585.5 48.75,-585.5"/> +<text xml:space="preserve" text-anchor="start" x="51.75" y="-592.25" font-family="Times,serif" font-size="14.00">size</text> +<polygon fill="#e0ffe0" stroke="none" points="75.75,-585.5 75.75,-608 202.5,-608 202.5,-585.5 75.75,-585.5"/> +<polygon fill="none" stroke="black" points="75.75,-585.5 75.75,-608 202.5,-608 202.5,-585.5 75.75,-585.5"/> +<text xml:space="preserve" text-anchor="start" x="127.5" y="-592.25" font-family="Times,serif" font-size="14.00">type</text> +<polygon fill="#e0ffe0" stroke="none" points="202.5,-585.5 202.5,-608 281.25,-608 281.25,-585.5 202.5,-585.5"/> +<polygon fill="none" stroke="black" points="202.5,-585.5 202.5,-608 281.25,-608 281.25,-585.5 202.5,-585.5"/> +<text xml:space="preserve" text-anchor="start" x="236.62" y="-592.25" font-family="Times,serif" font-size="14.00">id</text> +<polygon fill="none" stroke="black" points="24,-563 24,-585.5 48.75,-585.5 48.75,-563 24,-563"/> +<text xml:space="preserve" text-anchor="start" x="33" y="-569.75" font-family="Times,serif" font-size="14.00">0</text> +<polygon fill="none" stroke="black" points="48.75,-563 48.75,-585.5 75.75,-585.5 75.75,-563 48.75,-563"/> +<text xml:space="preserve" text-anchor="start" x="58.88" y="-569.75" font-family="Times,serif" font-size="14.00">1</text> +<polygon fill="none" stroke="black" points="75.75,-563 75.75,-585.5 202.5,-585.5 202.5,-563 75.75,-563"/> +<text xml:space="preserve" text-anchor="start" x="89.62" y="-569.75" font-family="Times,serif" font-size="14.00">u1→PayloadType</text> +<polygon fill="none" stroke="black" points="202.5,-563 202.5,-585.5 281.25,-585.5 281.25,-563 202.5,-563"/> +<text xml:space="preserve" text-anchor="start" x="205.5" y="-569.75" font-family="Times,serif" font-size="14.00">type_payload</text> +<polygon fill="none" stroke="black" points="24,-540.5 24,-563 48.75,-563 48.75,-540.5 24,-540.5"/> +<text xml:space="preserve" text-anchor="start" x="33" y="-547.25" font-family="Times,serif" font-size="14.00">1</text> +<polygon fill="none" stroke="black" points="48.75,-540.5 48.75,-563 75.75,-563 75.75,-540.5 48.75,-540.5"/> +<text xml:space="preserve" text-anchor="start" x="58.88" y="-547.25" font-family="Times,serif" font-size="14.00">2</text> +<polygon fill="none" stroke="black" points="75.75,-540.5 75.75,-563 202.5,-563 202.5,-540.5 75.75,-540.5"/> +<text xml:space="preserve" text-anchor="start" x="126" y="-547.25" font-family="Times,serif" font-size="14.00">u2be</text> +<polygon fill="none" stroke="black" points="202.5,-540.5 202.5,-563 281.25,-563 281.25,-540.5 202.5,-540.5"/> +<text xml:space="preserve" text-anchor="start" x="208.88" y="-547.25" font-family="Times,serif" font-size="14.00">len_payload</text> +<polygon fill="none" stroke="black" points="24,-518 24,-540.5 48.75,-540.5 48.75,-518 24,-518"/> +<text xml:space="preserve" text-anchor="start" x="33" y="-524.75" font-family="Times,serif" font-size="14.00">3</text> +<polygon fill="none" stroke="black" points="48.75,-518 48.75,-540.5 75.75,-540.5 75.75,-518 48.75,-518"/> +<text xml:space="preserve" text-anchor="start" x="56.62" y="-524.75" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="75.75,-518 75.75,-540.5 202.5,-540.5 202.5,-518 75.75,-518"/> +<text xml:space="preserve" text-anchor="start" x="78.75" y="-524.75" font-family="Times,serif" font-size="14.00">switch (type_payload)</text> +<polygon fill="none" stroke="black" points="202.5,-518 202.5,-540.5 281.25,-540.5 281.25,-518 202.5,-518"/> +<text xml:space="preserve" text-anchor="start" x="220.5" y="-524.75" font-family="Times,serif" font-size="14.00">payload</text> </g> <!-- solec__seq->solec__seq --> -<g id="edge8" class="edge"> +<g id="edge9" class="edge"> <title>solec__seq:type_payload_type->solec__seq:payload_type</title> -<path fill="none" stroke="#404040" d="M213.52,-567.36C171.94,-588.21 181.39,-612 241.88,-612 299.93,-612 310.97,-560.57 274.99,-529.15"/> -<polygon fill="#404040" stroke="#404040" points="277.33,-526.52 267.23,-523.3 273.12,-532.12 277.33,-526.52"/> +<path fill="none" stroke="#404040" d="M213.11,-585.36C170.93,-606.21 180.52,-630 241.88,-630 300.77,-630 311.96,-578.57 275.47,-547.15"/> +<polygon fill="#404040" stroke="#404040" points="277.7,-544.45 267.59,-541.3 273.53,-550.07 277.7,-544.45"/> </g> <!-- solec__seq_payload_switch --> <g id="node2" class="node"> <title>solec__seq_payload_switch</title> -<polygon fill="#f0f2e4" stroke="none" points="333.25,-568.25 333.25,-590.75 479.5,-590.75 479.5,-568.25 333.25,-568.25"/> -<polygon fill="none" stroke="black" points="333.25,-568.25 333.25,-590.75 479.5,-590.75 479.5,-568.25 333.25,-568.25"/> -<text xml:space="preserve" text-anchor="start" x="394.75" y="-575" font-family="Times,serif" font-size="14.00">case</text> -<polygon fill="#f0f2e4" stroke="none" points="479.5,-568.25 479.5,-590.75 545.5,-590.75 545.5,-568.25 479.5,-568.25"/> -<polygon fill="none" stroke="black" points="479.5,-568.25 479.5,-590.75 545.5,-590.75 545.5,-568.25 479.5,-568.25"/> -<text xml:space="preserve" text-anchor="start" x="500.88" y="-575" font-family="Times,serif" font-size="14.00">type</text> -<polygon fill="none" stroke="black" points="333.25,-545.75 333.25,-568.25 479.5,-568.25 479.5,-545.75 333.25,-545.75"/> -<text xml:space="preserve" text-anchor="start" x="353.12" y="-552.5" font-family="Times,serif" font-size="14.00">:payload_type_auth</text> -<polygon fill="none" stroke="black" points="479.5,-545.75 479.5,-568.25 545.5,-568.25 545.5,-545.75 479.5,-545.75"/> -<text xml:space="preserve" text-anchor="start" x="499" y="-552.5" font-family="Times,serif" font-size="14.00">Auth</text> -<polygon fill="none" stroke="black" points="333.25,-523.25 333.25,-545.75 479.5,-545.75 479.5,-523.25 333.25,-523.25"/> -<text xml:space="preserve" text-anchor="start" x="351.62" y="-530" font-family="Times,serif" font-size="14.00">:payload_type_error</text> -<polygon fill="none" stroke="black" points="479.5,-523.25 479.5,-545.75 545.5,-545.75 545.5,-523.25 479.5,-523.25"/> -<text xml:space="preserve" text-anchor="start" x="498.25" y="-530" font-family="Times,serif" font-size="14.00">Error</text> -<polygon fill="none" stroke="black" points="333.25,-500.75 333.25,-523.25 479.5,-523.25 479.5,-500.75 333.25,-500.75"/> -<text xml:space="preserve" text-anchor="start" x="336.25" y="-507.5" font-family="Times,serif" font-size="14.00">:payload_type_handshake</text> -<polygon fill="none" stroke="black" points="479.5,-500.75 479.5,-523.25 545.5,-523.25 545.5,-500.75 479.5,-500.75"/> -<text xml:space="preserve" text-anchor="start" x="482.5" y="-507.5" font-family="Times,serif" font-size="14.00">Handshake</text> -<polygon fill="none" stroke="black" points="333.25,-478.25 333.25,-500.75 479.5,-500.75 479.5,-478.25 333.25,-478.25"/> -<text xml:space="preserve" text-anchor="start" x="341.5" y="-485" font-family="Times,serif" font-size="14.00">:payload_type_message</text> -<polygon fill="none" stroke="black" points="479.5,-478.25 479.5,-500.75 545.5,-500.75 545.5,-478.25 479.5,-478.25"/> -<text xml:space="preserve" text-anchor="start" x="488.5" y="-485" font-family="Times,serif" font-size="14.00">Message</text> -<polygon fill="none" stroke="black" points="333.25,-455.75 333.25,-478.25 479.5,-478.25 479.5,-455.75 333.25,-455.75"/> -<text xml:space="preserve" text-anchor="start" x="344.5" y="-462.5" font-family="Times,serif" font-size="14.00">:payload_type_success</text> -<polygon fill="none" stroke="black" points="479.5,-455.75 479.5,-478.25 545.5,-478.25 545.5,-455.75 479.5,-455.75"/> -<text xml:space="preserve" text-anchor="start" x="491.12" y="-462.5" font-family="Times,serif" font-size="14.00">Success</text> -<polygon fill="none" stroke="black" points="333.25,-433.25 333.25,-455.75 479.5,-455.75 479.5,-433.25 333.25,-433.25"/> -<text xml:space="preserve" text-anchor="start" x="355.38" y="-440" font-family="Times,serif" font-size="14.00">:payload_type_test</text> -<polygon fill="none" stroke="black" points="479.5,-433.25 479.5,-455.75 545.5,-455.75 545.5,-433.25 479.5,-433.25"/> -<text xml:space="preserve" text-anchor="start" x="500.88" y="-440" font-family="Times,serif" font-size="14.00">Test</text> +<polygon fill="#f0f2e4" stroke="none" points="333.25,-597.5 333.25,-620 485.5,-620 485.5,-597.5 333.25,-597.5"/> +<polygon fill="none" stroke="black" points="333.25,-597.5 333.25,-620 485.5,-620 485.5,-597.5 333.25,-597.5"/> +<text xml:space="preserve" text-anchor="start" x="397.75" y="-604.25" font-family="Times,serif" font-size="14.00">case</text> +<polygon fill="#f0f2e4" stroke="none" points="485.5,-597.5 485.5,-620 553.75,-620 553.75,-597.5 485.5,-597.5"/> +<polygon fill="none" stroke="black" points="485.5,-597.5 485.5,-620 553.75,-620 553.75,-597.5 485.5,-597.5"/> +<text xml:space="preserve" text-anchor="start" x="508" y="-604.25" font-family="Times,serif" font-size="14.00">type</text> +<polygon fill="none" stroke="black" points="333.25,-575 333.25,-597.5 485.5,-597.5 485.5,-575 333.25,-575"/> +<text xml:space="preserve" text-anchor="start" x="354.62" y="-581.75" font-family="Times,serif" font-size="14.00">:payload_type_error</text> +<polygon fill="none" stroke="black" points="485.5,-575 485.5,-597.5 553.75,-597.5 553.75,-575 485.5,-575"/> +<text xml:space="preserve" text-anchor="start" x="505.38" y="-581.75" font-family="Times,serif" font-size="14.00">Error</text> +<polygon fill="none" stroke="black" points="333.25,-552.5 333.25,-575 485.5,-575 485.5,-552.5 333.25,-552.5"/> +<text xml:space="preserve" text-anchor="start" x="339.25" y="-559.25" font-family="Times,serif" font-size="14.00">:payload_type_handshake</text> +<polygon fill="none" stroke="black" points="485.5,-552.5 485.5,-575 553.75,-575 553.75,-552.5 485.5,-552.5"/> +<text xml:space="preserve" text-anchor="start" x="489.62" y="-559.25" font-family="Times,serif" font-size="14.00">Handshake</text> +<polygon fill="none" stroke="black" points="333.25,-530 333.25,-552.5 485.5,-552.5 485.5,-530 333.25,-530"/> +<text xml:space="preserve" text-anchor="start" x="344.5" y="-536.75" font-family="Times,serif" font-size="14.00">:payload_type_message</text> +<polygon fill="none" stroke="black" points="485.5,-530 485.5,-552.5 553.75,-552.5 553.75,-530 485.5,-530"/> +<text xml:space="preserve" text-anchor="start" x="495.62" y="-536.75" font-family="Times,serif" font-size="14.00">Message</text> +<polygon fill="none" stroke="black" points="333.25,-507.5 333.25,-530 485.5,-530 485.5,-507.5 333.25,-507.5"/> +<text xml:space="preserve" text-anchor="start" x="336.25" y="-514.25" font-family="Times,serif" font-size="14.00">:payload_type_server_auth</text> +<polygon fill="none" stroke="black" points="485.5,-507.5 485.5,-530 553.75,-530 553.75,-507.5 485.5,-507.5"/> +<text xml:space="preserve" text-anchor="start" x="488.5" y="-514.25" font-family="Times,serif" font-size="14.00">ServerAuth</text> +<polygon fill="none" stroke="black" points="333.25,-485 333.25,-507.5 485.5,-507.5 485.5,-485 333.25,-485"/> +<text xml:space="preserve" text-anchor="start" x="347.5" y="-491.75" font-family="Times,serif" font-size="14.00">:payload_type_success</text> +<polygon fill="none" stroke="black" points="485.5,-485 485.5,-507.5 553.75,-507.5 553.75,-485 485.5,-485"/> +<text xml:space="preserve" text-anchor="start" x="498.25" y="-491.75" font-family="Times,serif" font-size="14.00">Success</text> +<polygon fill="none" stroke="black" points="333.25,-462.5 333.25,-485 485.5,-485 485.5,-462.5 333.25,-462.5"/> +<text xml:space="preserve" text-anchor="start" x="358.38" y="-469.25" font-family="Times,serif" font-size="14.00">:payload_type_test</text> +<polygon fill="none" stroke="black" points="485.5,-462.5 485.5,-485 553.75,-485 553.75,-462.5 485.5,-462.5"/> +<text xml:space="preserve" text-anchor="start" x="508" y="-469.25" font-family="Times,serif" font-size="14.00">Test</text> +<polygon fill="none" stroke="black" points="333.25,-440 333.25,-462.5 485.5,-462.5 485.5,-440 333.25,-440"/> +<text xml:space="preserve" text-anchor="start" x="341.5" y="-446.75" font-family="Times,serif" font-size="14.00">:payload_type_user_auth</text> +<polygon fill="none" stroke="black" points="485.5,-440 485.5,-462.5 553.75,-462.5 553.75,-440 485.5,-440"/> +<text xml:space="preserve" text-anchor="start" x="493.38" y="-446.75" font-family="Times,serif" font-size="14.00">UserAuth</text> </g> <!-- solec__seq->solec__seq_payload_switch --> <g id="edge1" class="edge"> <title>solec__seq:payload_type->solec__seq_payload_switch</title> -<path fill="none" stroke="black" stroke-width="2" d="M282.25,-511.25C292.61,-511.25 303.36,-511.27 314.14,-511.3"/> -<polygon fill="black" stroke="black" stroke-width="2" points="312.35,-514.79 322.36,-511.32 312.37,-507.79 312.35,-514.79"/> -</g> -<!-- auth__seq --> -<g id="node3" class="node"> -<title>auth__seq</title> -<polygon fill="#e0ffe0" stroke="none" points="637.25,-812.25 637.25,-834.75 662,-834.75 662,-812.25 637.25,-812.25"/> -<polygon fill="none" stroke="black" points="637.25,-812.25 637.25,-834.75 662,-834.75 662,-812.25 637.25,-812.25"/> -<text xml:space="preserve" text-anchor="start" x="640.25" y="-819" font-family="Times,serif" font-size="14.00">pos</text> -<polygon fill="#e0ffe0" stroke="none" points="662,-812.25 662,-834.75 689,-834.75 689,-812.25 662,-812.25"/> -<polygon fill="none" stroke="black" points="662,-812.25 662,-834.75 689,-834.75 689,-812.25 662,-812.25"/> -<text xml:space="preserve" text-anchor="start" x="665" y="-819" font-family="Times,serif" font-size="14.00">size</text> -<polygon fill="#e0ffe0" stroke="none" points="689,-812.25 689,-834.75 728,-834.75 728,-812.25 689,-812.25"/> -<polygon fill="none" stroke="black" points="689,-812.25 689,-834.75 728,-834.75 728,-812.25 689,-812.25"/> -<text xml:space="preserve" text-anchor="start" x="696.88" y="-819" font-family="Times,serif" font-size="14.00">type</text> -<polygon fill="#e0ffe0" stroke="none" points="728,-812.25 728,-834.75 764,-834.75 764,-812.25 728,-812.25"/> -<polygon fill="none" stroke="black" points="728,-812.25 728,-834.75 764,-834.75 764,-812.25 728,-812.25"/> -<text xml:space="preserve" text-anchor="start" x="740.75" y="-819" font-family="Times,serif" font-size="14.00">id</text> -<polygon fill="none" stroke="black" points="637.25,-789.75 637.25,-812.25 662,-812.25 662,-789.75 637.25,-789.75"/> -<text xml:space="preserve" text-anchor="start" x="646.25" y="-796.5" font-family="Times,serif" font-size="14.00">0</text> -<polygon fill="none" stroke="black" points="662,-789.75 662,-812.25 689,-812.25 689,-789.75 662,-789.75"/> -<text xml:space="preserve" text-anchor="start" x="669.88" y="-796.5" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="689,-789.75 689,-812.25 728,-812.25 728,-789.75 689,-789.75"/> -<text xml:space="preserve" text-anchor="start" x="692" y="-796.5" font-family="Times,serif" font-size="14.00">String</text> -<polygon fill="none" stroke="black" points="728,-789.75 728,-812.25 764,-812.25 764,-789.75 728,-789.75"/> -<text xml:space="preserve" text-anchor="start" x="731" y="-796.5" font-family="Times,serif" font-size="14.00">name</text> -<polygon fill="none" stroke="black" points="637.25,-767.25 637.25,-789.75 662,-789.75 662,-767.25 637.25,-767.25"/> -<text xml:space="preserve" text-anchor="start" x="644" y="-774" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="662,-767.25 662,-789.75 689,-789.75 689,-767.25 662,-767.25"/> -<text xml:space="preserve" text-anchor="start" x="669.88" y="-774" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="689,-767.25 689,-789.75 728,-789.75 728,-767.25 689,-767.25"/> -<text xml:space="preserve" text-anchor="start" x="692" y="-774" font-family="Times,serif" font-size="14.00">String</text> -<polygon fill="none" stroke="black" points="728,-767.25 728,-789.75 764,-789.75 764,-767.25 728,-767.25"/> -<text xml:space="preserve" text-anchor="start" x="734.38" y="-774" font-family="Times,serif" font-size="14.00">pass</text> -</g> -<!-- solec__seq_payload_switch->auth__seq --> -<g id="edge2" class="edge"> -<title>solec__seq_payload_switch:case0->auth__seq</title> -<path fill="none" stroke="black" stroke-width="2" d="M546.5,-557C590.31,-557 554.14,-716.78 581.5,-751 591.29,-763.25 604.63,-772.54 618.83,-779.58"/> -<polygon fill="black" stroke="black" stroke-width="2" points="615.97,-782.12 626.52,-783.06 618.86,-775.75 615.97,-782.12"/> +<path fill="none" stroke="black" stroke-width="2" d="M282.25,-529.25C292.68,-529.25 303.49,-529.27 314.34,-529.29"/> +<polygon fill="black" stroke="black" stroke-width="2" points="312.62,-532.79 322.63,-529.32 312.64,-525.79 312.62,-532.79"/> </g> <!-- error__seq --> -<g id="node4" class="node"> +<g id="node3" class="node"> <title>error__seq</title> -<polygon fill="#e0ffe0" stroke="none" points="597.5,-688 597.5,-710.5 622.25,-710.5 622.25,-688 597.5,-688"/> -<polygon fill="none" stroke="black" points="597.5,-688 597.5,-710.5 622.25,-710.5 622.25,-688 597.5,-688"/> -<text xml:space="preserve" text-anchor="start" x="600.5" y="-694.75" font-family="Times,serif" font-size="14.00">pos</text> -<polygon fill="#e0ffe0" stroke="none" points="622.25,-688 622.25,-710.5 649.25,-710.5 649.25,-688 622.25,-688"/> -<polygon fill="none" stroke="black" points="622.25,-688 622.25,-710.5 649.25,-710.5 649.25,-688 622.25,-688"/> -<text xml:space="preserve" text-anchor="start" x="625.25" y="-694.75" font-family="Times,serif" font-size="14.00">size</text> -<polygon fill="#e0ffe0" stroke="none" points="649.25,-688 649.25,-710.5 739.25,-710.5 739.25,-688 649.25,-688"/> -<polygon fill="none" stroke="black" points="649.25,-688 649.25,-710.5 739.25,-710.5 739.25,-688 649.25,-688"/> -<text xml:space="preserve" text-anchor="start" x="682.62" y="-694.75" font-family="Times,serif" font-size="14.00">type</text> -<polygon fill="#e0ffe0" stroke="none" points="739.25,-688 739.25,-710.5 803.75,-710.5 803.75,-688 739.25,-688"/> -<polygon fill="none" stroke="black" points="739.25,-688 739.25,-710.5 803.75,-710.5 803.75,-688 739.25,-688"/> -<text xml:space="preserve" text-anchor="start" x="766.25" y="-694.75" font-family="Times,serif" font-size="14.00">id</text> -<polygon fill="none" stroke="black" points="597.5,-665.5 597.5,-688 622.25,-688 622.25,-665.5 597.5,-665.5"/> -<text xml:space="preserve" text-anchor="start" x="606.5" y="-672.25" font-family="Times,serif" font-size="14.00">0</text> -<polygon fill="none" stroke="black" points="622.25,-665.5 622.25,-688 649.25,-688 649.25,-665.5 622.25,-665.5"/> -<text xml:space="preserve" text-anchor="start" x="632.38" y="-672.25" font-family="Times,serif" font-size="14.00">1</text> -<polygon fill="none" stroke="black" points="649.25,-665.5 649.25,-688 739.25,-688 739.25,-665.5 649.25,-665.5"/> -<text xml:space="preserve" text-anchor="start" x="652.25" y="-672.25" font-family="Times,serif" font-size="14.00">u1→ErrorType</text> -<polygon fill="none" stroke="black" points="739.25,-665.5 739.25,-688 803.75,-688 803.75,-665.5 739.25,-665.5"/> -<text xml:space="preserve" text-anchor="start" x="742.25" y="-672.25" font-family="Times,serif" font-size="14.00">error_code</text> +<polygon fill="#e0ffe0" stroke="none" points="623,-937 623,-959.5 647.75,-959.5 647.75,-937 623,-937"/> +<polygon fill="none" stroke="black" points="623,-937 623,-959.5 647.75,-959.5 647.75,-937 623,-937"/> +<text xml:space="preserve" text-anchor="start" x="626" y="-943.75" font-family="Times,serif" font-size="14.00">pos</text> +<polygon fill="#e0ffe0" stroke="none" points="647.75,-937 647.75,-959.5 674.75,-959.5 674.75,-937 647.75,-937"/> +<polygon fill="none" stroke="black" points="647.75,-937 647.75,-959.5 674.75,-959.5 674.75,-937 647.75,-937"/> +<text xml:space="preserve" text-anchor="start" x="650.75" y="-943.75" font-family="Times,serif" font-size="14.00">size</text> +<polygon fill="#e0ffe0" stroke="none" points="674.75,-937 674.75,-959.5 764.75,-959.5 764.75,-937 674.75,-937"/> +<polygon fill="none" stroke="black" points="674.75,-937 674.75,-959.5 764.75,-959.5 764.75,-937 674.75,-937"/> +<text xml:space="preserve" text-anchor="start" x="708.12" y="-943.75" font-family="Times,serif" font-size="14.00">type</text> +<polygon fill="#e0ffe0" stroke="none" points="764.75,-937 764.75,-959.5 829.25,-959.5 829.25,-937 764.75,-937"/> +<polygon fill="none" stroke="black" points="764.75,-937 764.75,-959.5 829.25,-959.5 829.25,-937 764.75,-937"/> +<text xml:space="preserve" text-anchor="start" x="791.75" y="-943.75" font-family="Times,serif" font-size="14.00">id</text> +<polygon fill="none" stroke="black" points="623,-914.5 623,-937 647.75,-937 647.75,-914.5 623,-914.5"/> +<text xml:space="preserve" text-anchor="start" x="632" y="-921.25" font-family="Times,serif" font-size="14.00">0</text> +<polygon fill="none" stroke="black" points="647.75,-914.5 647.75,-937 674.75,-937 674.75,-914.5 647.75,-914.5"/> +<text xml:space="preserve" text-anchor="start" x="657.88" y="-921.25" font-family="Times,serif" font-size="14.00">1</text> +<polygon fill="none" stroke="black" points="674.75,-914.5 674.75,-937 764.75,-937 764.75,-914.5 674.75,-914.5"/> +<text xml:space="preserve" text-anchor="start" x="677.75" y="-921.25" font-family="Times,serif" font-size="14.00">u1→ErrorType</text> +<polygon fill="none" stroke="black" points="764.75,-914.5 764.75,-937 829.25,-937 829.25,-914.5 764.75,-914.5"/> +<text xml:space="preserve" text-anchor="start" x="767.75" y="-921.25" font-family="Times,serif" font-size="14.00">error_code</text> </g> <!-- solec__seq_payload_switch->error__seq --> -<g id="edge3" class="edge"> -<title>solec__seq_payload_switch:case1->error__seq</title> -<path fill="none" stroke="black" stroke-width="2" d="M546.5,-534.5C599.71,-534.5 544.29,-610.96 581.5,-649 583.55,-651.09 585.71,-653.08 587.97,-654.95"/> -<polygon fill="black" stroke="black" stroke-width="2" points="584.55,-656.78 594.68,-659.88 588.69,-651.14 584.55,-656.78"/> +<g id="edge2" class="edge"> +<title>solec__seq_payload_switch:case0->error__seq</title> +<path fill="none" stroke="black" stroke-width="2" d="M554.75,-586.25C624.46,-586.25 544.78,-844.73 589.75,-898 594.41,-903.52 599.79,-908.28 605.68,-912.4"/> +<polygon fill="black" stroke="black" stroke-width="2" points="602.37,-914.47 612.72,-916.74 606.05,-908.51 602.37,-914.47"/> </g> <!-- handshake__seq --> -<g id="node5" class="node"> +<g id="node4" class="node"> <title>handshake__seq</title> -<polygon fill="#e0ffe0" stroke="none" points="611,-586.25 611,-608.75 635.75,-608.75 635.75,-586.25 611,-586.25"/> -<polygon fill="none" stroke="black" points="611,-586.25 611,-608.75 635.75,-608.75 635.75,-586.25 611,-586.25"/> -<text xml:space="preserve" text-anchor="start" x="614" y="-593" font-family="Times,serif" font-size="14.00">pos</text> -<polygon fill="#e0ffe0" stroke="none" points="635.75,-586.25 635.75,-608.75 662.75,-608.75 662.75,-586.25 635.75,-586.25"/> -<polygon fill="none" stroke="black" points="635.75,-586.25 635.75,-608.75 662.75,-608.75 662.75,-586.25 635.75,-586.25"/> -<text xml:space="preserve" text-anchor="start" x="638.75" y="-593" font-family="Times,serif" font-size="14.00">size</text> -<polygon fill="#e0ffe0" stroke="none" points="662.75,-586.25 662.75,-608.75 692,-608.75 692,-586.25 662.75,-586.25"/> -<polygon fill="none" stroke="black" points="662.75,-586.25 662.75,-608.75 692,-608.75 692,-586.25 662.75,-586.25"/> -<text xml:space="preserve" text-anchor="start" x="665.75" y="-593" font-family="Times,serif" font-size="14.00">type</text> -<polygon fill="#e0ffe0" stroke="none" points="692,-586.25 692,-608.75 790.25,-608.75 790.25,-586.25 692,-586.25"/> -<polygon fill="none" stroke="black" points="692,-586.25 692,-608.75 790.25,-608.75 790.25,-586.25 692,-586.25"/> -<text xml:space="preserve" text-anchor="start" x="735.88" y="-593" font-family="Times,serif" font-size="14.00">id</text> -<polygon fill="none" stroke="black" points="611,-563.75 611,-586.25 635.75,-586.25 635.75,-563.75 611,-563.75"/> -<text xml:space="preserve" text-anchor="start" x="620" y="-570.5" font-family="Times,serif" font-size="14.00">0</text> -<polygon fill="none" stroke="black" points="635.75,-563.75 635.75,-586.25 662.75,-586.25 662.75,-563.75 635.75,-563.75"/> -<text xml:space="preserve" text-anchor="start" x="645.88" y="-570.5" font-family="Times,serif" font-size="14.00">1</text> -<polygon fill="none" stroke="black" points="662.75,-563.75 662.75,-586.25 692,-586.25 692,-563.75 662.75,-563.75"/> -<text xml:space="preserve" text-anchor="start" x="670.62" y="-570.5" font-family="Times,serif" font-size="14.00">u1</text> -<polygon fill="none" stroke="black" points="692,-563.75 692,-586.25 790.25,-586.25 790.25,-563.75 692,-563.75"/> -<text xml:space="preserve" text-anchor="start" x="695.38" y="-570.5" font-family="Times,serif" font-size="14.00">proto_ver_major</text> -<polygon fill="none" stroke="black" points="611,-541.25 611,-563.75 635.75,-563.75 635.75,-541.25 611,-541.25"/> -<text xml:space="preserve" text-anchor="start" x="620" y="-548" font-family="Times,serif" font-size="14.00">1</text> -<polygon fill="none" stroke="black" points="635.75,-541.25 635.75,-563.75 662.75,-563.75 662.75,-541.25 635.75,-541.25"/> -<text xml:space="preserve" text-anchor="start" x="645.88" y="-548" font-family="Times,serif" font-size="14.00">1</text> -<polygon fill="none" stroke="black" points="662.75,-541.25 662.75,-563.75 692,-563.75 692,-541.25 662.75,-541.25"/> -<text xml:space="preserve" text-anchor="start" x="670.62" y="-548" font-family="Times,serif" font-size="14.00">u1</text> -<polygon fill="none" stroke="black" points="692,-541.25 692,-563.75 790.25,-563.75 790.25,-541.25 692,-541.25"/> -<text xml:space="preserve" text-anchor="start" x="695" y="-548" font-family="Times,serif" font-size="14.00">proto_ver_minor</text> +<polygon fill="#e0ffe0" stroke="none" points="605.75,-834.5 605.75,-857 630.5,-857 630.5,-834.5 605.75,-834.5"/> +<polygon fill="none" stroke="black" points="605.75,-834.5 605.75,-857 630.5,-857 630.5,-834.5 605.75,-834.5"/> +<text xml:space="preserve" text-anchor="start" x="608.75" y="-841.25" font-family="Times,serif" font-size="14.00">pos</text> +<polygon fill="#e0ffe0" stroke="none" points="630.5,-834.5 630.5,-857 657.5,-857 657.5,-834.5 630.5,-834.5"/> +<polygon fill="none" stroke="black" points="630.5,-834.5 630.5,-857 657.5,-857 657.5,-834.5 630.5,-834.5"/> +<text xml:space="preserve" text-anchor="start" x="633.5" y="-841.25" font-family="Times,serif" font-size="14.00">size</text> +<polygon fill="#e0ffe0" stroke="none" points="657.5,-834.5 657.5,-857 748.25,-857 748.25,-834.5 657.5,-834.5"/> +<polygon fill="none" stroke="black" points="657.5,-834.5 657.5,-857 748.25,-857 748.25,-834.5 657.5,-834.5"/> +<text xml:space="preserve" text-anchor="start" x="691.25" y="-841.25" font-family="Times,serif" font-size="14.00">type</text> +<polygon fill="#e0ffe0" stroke="none" points="748.25,-834.5 748.25,-857 846.5,-857 846.5,-834.5 748.25,-834.5"/> +<polygon fill="none" stroke="black" points="748.25,-834.5 748.25,-857 846.5,-857 846.5,-834.5 748.25,-834.5"/> +<text xml:space="preserve" text-anchor="start" x="792.12" y="-841.25" font-family="Times,serif" font-size="14.00">id</text> +<polygon fill="none" stroke="black" points="605.75,-812 605.75,-834.5 630.5,-834.5 630.5,-812 605.75,-812"/> +<text xml:space="preserve" text-anchor="start" x="614.75" y="-818.75" font-family="Times,serif" font-size="14.00">0</text> +<polygon fill="none" stroke="black" points="630.5,-812 630.5,-834.5 657.5,-834.5 657.5,-812 630.5,-812"/> +<text xml:space="preserve" text-anchor="start" x="640.62" y="-818.75" font-family="Times,serif" font-size="14.00">1</text> +<polygon fill="none" stroke="black" points="657.5,-812 657.5,-834.5 748.25,-834.5 748.25,-812 657.5,-812"/> +<text xml:space="preserve" text-anchor="start" x="696.12" y="-818.75" font-family="Times,serif" font-size="14.00">u1</text> +<polygon fill="none" stroke="black" points="748.25,-812 748.25,-834.5 846.5,-834.5 846.5,-812 748.25,-812"/> +<text xml:space="preserve" text-anchor="start" x="751.62" y="-818.75" font-family="Times,serif" font-size="14.00">proto_ver_major</text> +<polygon fill="none" stroke="black" points="605.75,-789.5 605.75,-812 630.5,-812 630.5,-789.5 605.75,-789.5"/> +<text xml:space="preserve" text-anchor="start" x="614.75" y="-796.25" font-family="Times,serif" font-size="14.00">1</text> +<polygon fill="none" stroke="black" points="630.5,-789.5 630.5,-812 657.5,-812 657.5,-789.5 630.5,-789.5"/> +<text xml:space="preserve" text-anchor="start" x="640.62" y="-796.25" font-family="Times,serif" font-size="14.00">1</text> +<polygon fill="none" stroke="black" points="657.5,-789.5 657.5,-812 748.25,-812 748.25,-789.5 657.5,-789.5"/> +<text xml:space="preserve" text-anchor="start" x="696.12" y="-796.25" font-family="Times,serif" font-size="14.00">u1</text> +<polygon fill="none" stroke="black" points="748.25,-789.5 748.25,-812 846.5,-812 846.5,-789.5 748.25,-789.5"/> +<text xml:space="preserve" text-anchor="start" x="751.25" y="-796.25" font-family="Times,serif" font-size="14.00">proto_ver_minor</text> +<polygon fill="none" stroke="black" points="605.75,-767 605.75,-789.5 630.5,-789.5 630.5,-767 605.75,-767"/> +<text xml:space="preserve" text-anchor="start" x="614.75" y="-773.75" font-family="Times,serif" font-size="14.00">2</text> +<polygon fill="none" stroke="black" points="630.5,-767 630.5,-789.5 657.5,-789.5 657.5,-767 630.5,-767"/> +<text xml:space="preserve" text-anchor="start" x="640.62" y="-773.75" font-family="Times,serif" font-size="14.00">1</text> +<polygon fill="none" stroke="black" points="657.5,-767 657.5,-789.5 748.25,-789.5 748.25,-767 657.5,-767"/> +<text xml:space="preserve" text-anchor="start" x="660.5" y="-773.75" font-family="Times,serif" font-size="14.00">u1→ConnType</text> +<polygon fill="none" stroke="black" points="748.25,-767 748.25,-789.5 846.5,-789.5 846.5,-767 748.25,-767"/> +<text xml:space="preserve" text-anchor="start" x="769.25" y="-773.75" font-family="Times,serif" font-size="14.00">conn_type</text> </g> <!-- solec__seq_payload_switch->handshake__seq --> -<g id="edge4" class="edge"> -<title>solec__seq_payload_switch:case2->handshake__seq</title> -<path fill="none" stroke="black" stroke-width="2" d="M546.5,-512C548.28,-512 571.52,-521.39 599.38,-532.93"/> -<polygon fill="black" stroke="black" stroke-width="2" points="596.45,-535.5 607.02,-536.1 599.13,-529.04 596.45,-535.5"/> +<g id="edge3" class="edge"> +<title>solec__seq_payload_switch:case1->handshake__seq</title> +<path fill="none" stroke="black" stroke-width="2" d="M554.75,-563.75C597.08,-563.75 563.59,-717.72 589.75,-751 590.82,-752.36 591.93,-753.69 593.07,-755"/> +<polygon fill="black" stroke="black" stroke-width="2" points="589.47,-756.32 598.96,-761.02 594.47,-751.43 589.47,-756.32"/> </g> <!-- message__seq --> -<g id="node6" class="node"> +<g id="node5" class="node"> <title>message__seq</title> -<polygon fill="#e0ffe0" stroke="none" points="623.38,-461.75 623.38,-484.25 648.12,-484.25 648.12,-461.75 623.38,-461.75"/> -<polygon fill="none" stroke="black" points="623.38,-461.75 623.38,-484.25 648.12,-484.25 648.12,-461.75 623.38,-461.75"/> -<text xml:space="preserve" text-anchor="start" x="626.38" y="-468.5" font-family="Times,serif" font-size="14.00">pos</text> -<polygon fill="#e0ffe0" stroke="none" points="648.12,-461.75 648.12,-484.25 675.12,-484.25 675.12,-461.75 648.12,-461.75"/> -<polygon fill="none" stroke="black" points="648.12,-461.75 648.12,-484.25 675.12,-484.25 675.12,-461.75 648.12,-461.75"/> -<text xml:space="preserve" text-anchor="start" x="651.12" y="-468.5" font-family="Times,serif" font-size="14.00">size</text> -<polygon fill="#e0ffe0" stroke="none" points="675.12,-461.75 675.12,-484.25 714.12,-484.25 714.12,-461.75 675.12,-461.75"/> -<polygon fill="none" stroke="black" points="675.12,-461.75 675.12,-484.25 714.12,-484.25 714.12,-461.75 675.12,-461.75"/> -<text xml:space="preserve" text-anchor="start" x="683" y="-468.5" font-family="Times,serif" font-size="14.00">type</text> -<polygon fill="#e0ffe0" stroke="none" points="714.12,-461.75 714.12,-484.25 777.88,-484.25 777.88,-461.75 714.12,-461.75"/> -<polygon fill="none" stroke="black" points="714.12,-461.75 714.12,-484.25 777.88,-484.25 777.88,-461.75 714.12,-461.75"/> -<text xml:space="preserve" text-anchor="start" x="740.75" y="-468.5" font-family="Times,serif" font-size="14.00">id</text> -<polygon fill="none" stroke="black" points="623.38,-439.25 623.38,-461.75 648.12,-461.75 648.12,-439.25 623.38,-439.25"/> -<text xml:space="preserve" text-anchor="start" x="632.38" y="-446" font-family="Times,serif" font-size="14.00">0</text> -<polygon fill="none" stroke="black" points="648.12,-439.25 648.12,-461.75 675.12,-461.75 675.12,-439.25 648.12,-439.25"/> -<text xml:space="preserve" text-anchor="start" x="656" y="-446" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="675.12,-439.25 675.12,-461.75 714.12,-461.75 714.12,-439.25 675.12,-439.25"/> -<text xml:space="preserve" text-anchor="start" x="678.12" y="-446" font-family="Times,serif" font-size="14.00">String</text> -<polygon fill="none" stroke="black" points="714.12,-439.25 714.12,-461.75 777.88,-461.75 777.88,-439.25 714.12,-439.25"/> -<text xml:space="preserve" text-anchor="start" x="728.38" y="-446" font-family="Times,serif" font-size="14.00">source</text> -<polygon fill="none" stroke="black" points="623.38,-416.75 623.38,-439.25 648.12,-439.25 648.12,-416.75 623.38,-416.75"/> -<text xml:space="preserve" text-anchor="start" x="630.12" y="-423.5" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="648.12,-416.75 648.12,-439.25 675.12,-439.25 675.12,-416.75 648.12,-416.75"/> -<text xml:space="preserve" text-anchor="start" x="656" y="-423.5" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="675.12,-416.75 675.12,-439.25 714.12,-439.25 714.12,-416.75 675.12,-416.75"/> -<text xml:space="preserve" text-anchor="start" x="678.12" y="-423.5" font-family="Times,serif" font-size="14.00">String</text> -<polygon fill="none" stroke="black" points="714.12,-416.75 714.12,-439.25 777.88,-439.25 777.88,-416.75 714.12,-416.75"/> -<text xml:space="preserve" text-anchor="start" x="730.62" y="-423.5" font-family="Times,serif" font-size="14.00">target</text> -<polygon fill="none" stroke="black" points="623.38,-394.25 623.38,-416.75 648.12,-416.75 648.12,-394.25 623.38,-394.25"/> -<text xml:space="preserve" text-anchor="start" x="630.12" y="-401" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="648.12,-394.25 648.12,-416.75 675.12,-416.75 675.12,-394.25 648.12,-394.25"/> -<text xml:space="preserve" text-anchor="start" x="658.25" y="-401" font-family="Times,serif" font-size="14.00">8</text> -<polygon fill="none" stroke="black" points="675.12,-394.25 675.12,-416.75 714.12,-416.75 714.12,-394.25 675.12,-394.25"/> -<text xml:space="preserve" text-anchor="start" x="681.5" y="-401" font-family="Times,serif" font-size="14.00">u8be</text> -<polygon fill="none" stroke="black" points="714.12,-394.25 714.12,-416.75 777.88,-416.75 777.88,-394.25 714.12,-394.25"/> -<text xml:space="preserve" text-anchor="start" x="717.12" y="-401" font-family="Times,serif" font-size="14.00">timestamp</text> -<polygon fill="none" stroke="black" points="623.38,-371.75 623.38,-394.25 648.12,-394.25 648.12,-371.75 623.38,-371.75"/> -<text xml:space="preserve" text-anchor="start" x="630.12" y="-378.5" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="648.12,-371.75 648.12,-394.25 675.12,-394.25 675.12,-371.75 648.12,-371.75"/> -<text xml:space="preserve" text-anchor="start" x="656" y="-378.5" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="675.12,-371.75 675.12,-394.25 714.12,-394.25 714.12,-371.75 675.12,-371.75"/> -<text xml:space="preserve" text-anchor="start" x="678.12" y="-378.5" font-family="Times,serif" font-size="14.00">String</text> -<polygon fill="none" stroke="black" points="714.12,-371.75 714.12,-394.25 777.88,-394.25 777.88,-371.75 714.12,-371.75"/> -<text xml:space="preserve" text-anchor="start" x="726.12" y="-378.5" font-family="Times,serif" font-size="14.00">content</text> +<polygon fill="#e0ffe0" stroke="none" points="648.88,-687.75 648.88,-710.25 673.62,-710.25 673.62,-687.75 648.88,-687.75"/> +<polygon fill="none" stroke="black" points="648.88,-687.75 648.88,-710.25 673.62,-710.25 673.62,-687.75 648.88,-687.75"/> +<text xml:space="preserve" text-anchor="start" x="651.88" y="-694.5" font-family="Times,serif" font-size="14.00">pos</text> +<polygon fill="#e0ffe0" stroke="none" points="673.62,-687.75 673.62,-710.25 700.62,-710.25 700.62,-687.75 673.62,-687.75"/> +<polygon fill="none" stroke="black" points="673.62,-687.75 673.62,-710.25 700.62,-710.25 700.62,-687.75 673.62,-687.75"/> +<text xml:space="preserve" text-anchor="start" x="676.62" y="-694.5" font-family="Times,serif" font-size="14.00">size</text> +<polygon fill="#e0ffe0" stroke="none" points="700.62,-687.75 700.62,-710.25 739.62,-710.25 739.62,-687.75 700.62,-687.75"/> +<polygon fill="none" stroke="black" points="700.62,-687.75 700.62,-710.25 739.62,-710.25 739.62,-687.75 700.62,-687.75"/> +<text xml:space="preserve" text-anchor="start" x="708.5" y="-694.5" font-family="Times,serif" font-size="14.00">type</text> +<polygon fill="#e0ffe0" stroke="none" points="739.62,-687.75 739.62,-710.25 803.38,-710.25 803.38,-687.75 739.62,-687.75"/> +<polygon fill="none" stroke="black" points="739.62,-687.75 739.62,-710.25 803.38,-710.25 803.38,-687.75 739.62,-687.75"/> +<text xml:space="preserve" text-anchor="start" x="766.25" y="-694.5" font-family="Times,serif" font-size="14.00">id</text> +<polygon fill="none" stroke="black" points="648.88,-665.25 648.88,-687.75 673.62,-687.75 673.62,-665.25 648.88,-665.25"/> +<text xml:space="preserve" text-anchor="start" x="657.88" y="-672" font-family="Times,serif" font-size="14.00">0</text> +<polygon fill="none" stroke="black" points="673.62,-665.25 673.62,-687.75 700.62,-687.75 700.62,-665.25 673.62,-665.25"/> +<text xml:space="preserve" text-anchor="start" x="681.5" y="-672" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="700.62,-665.25 700.62,-687.75 739.62,-687.75 739.62,-665.25 700.62,-665.25"/> +<text xml:space="preserve" text-anchor="start" x="703.62" y="-672" font-family="Times,serif" font-size="14.00">String</text> +<polygon fill="none" stroke="black" points="739.62,-665.25 739.62,-687.75 803.38,-687.75 803.38,-665.25 739.62,-665.25"/> +<text xml:space="preserve" text-anchor="start" x="753.88" y="-672" font-family="Times,serif" font-size="14.00">source</text> +<polygon fill="none" stroke="black" points="648.88,-642.75 648.88,-665.25 673.62,-665.25 673.62,-642.75 648.88,-642.75"/> +<text xml:space="preserve" text-anchor="start" x="655.62" y="-649.5" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="673.62,-642.75 673.62,-665.25 700.62,-665.25 700.62,-642.75 673.62,-642.75"/> +<text xml:space="preserve" text-anchor="start" x="681.5" y="-649.5" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="700.62,-642.75 700.62,-665.25 739.62,-665.25 739.62,-642.75 700.62,-642.75"/> +<text xml:space="preserve" text-anchor="start" x="703.62" y="-649.5" font-family="Times,serif" font-size="14.00">String</text> +<polygon fill="none" stroke="black" points="739.62,-642.75 739.62,-665.25 803.38,-665.25 803.38,-642.75 739.62,-642.75"/> +<text xml:space="preserve" text-anchor="start" x="756.12" y="-649.5" font-family="Times,serif" font-size="14.00">target</text> +<polygon fill="none" stroke="black" points="648.88,-620.25 648.88,-642.75 673.62,-642.75 673.62,-620.25 648.88,-620.25"/> +<text xml:space="preserve" text-anchor="start" x="655.62" y="-627" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="673.62,-620.25 673.62,-642.75 700.62,-642.75 700.62,-620.25 673.62,-620.25"/> +<text xml:space="preserve" text-anchor="start" x="683.75" y="-627" font-family="Times,serif" font-size="14.00">8</text> +<polygon fill="none" stroke="black" points="700.62,-620.25 700.62,-642.75 739.62,-642.75 739.62,-620.25 700.62,-620.25"/> +<text xml:space="preserve" text-anchor="start" x="707" y="-627" font-family="Times,serif" font-size="14.00">u8be</text> +<polygon fill="none" stroke="black" points="739.62,-620.25 739.62,-642.75 803.38,-642.75 803.38,-620.25 739.62,-620.25"/> +<text xml:space="preserve" text-anchor="start" x="742.62" y="-627" font-family="Times,serif" font-size="14.00">timestamp</text> +<polygon fill="none" stroke="black" points="648.88,-597.75 648.88,-620.25 673.62,-620.25 673.62,-597.75 648.88,-597.75"/> +<text xml:space="preserve" text-anchor="start" x="655.62" y="-604.5" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="673.62,-597.75 673.62,-620.25 700.62,-620.25 700.62,-597.75 673.62,-597.75"/> +<text xml:space="preserve" text-anchor="start" x="681.5" y="-604.5" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="700.62,-597.75 700.62,-620.25 739.62,-620.25 739.62,-597.75 700.62,-597.75"/> +<text xml:space="preserve" text-anchor="start" x="703.62" y="-604.5" font-family="Times,serif" font-size="14.00">String</text> +<polygon fill="none" stroke="black" points="739.62,-597.75 739.62,-620.25 803.38,-620.25 803.38,-597.75 739.62,-597.75"/> +<text xml:space="preserve" text-anchor="start" x="751.62" y="-604.5" font-family="Times,serif" font-size="14.00">content</text> </g> <!-- solec__seq_payload_switch->message__seq --> +<g id="edge4" class="edge"> +<title>solec__seq_payload_switch:case2->message__seq</title> +<path fill="none" stroke="black" stroke-width="2" d="M554.75,-541.25C578.62,-541.25 571.11,-567.08 589.75,-582 602.41,-592.14 616.72,-601.53 631.17,-609.95"/> +<polygon fill="black" stroke="black" stroke-width="2" points="628.12,-612.25 638.54,-614.13 631.57,-606.16 628.12,-612.25"/> +</g> +<!-- server_auth__seq --> +<g id="node6" class="node"> +<title>server_auth__seq</title> +<polygon fill="#e0ffe0" stroke="none" points="662.75,-519 662.75,-541.5 687.5,-541.5 687.5,-519 662.75,-519"/> +<polygon fill="none" stroke="black" points="662.75,-519 662.75,-541.5 687.5,-541.5 687.5,-519 662.75,-519"/> +<text xml:space="preserve" text-anchor="start" x="665.75" y="-525.75" font-family="Times,serif" font-size="14.00">pos</text> +<polygon fill="#e0ffe0" stroke="none" points="687.5,-519 687.5,-541.5 714.5,-541.5 714.5,-519 687.5,-519"/> +<polygon fill="none" stroke="black" points="687.5,-519 687.5,-541.5 714.5,-541.5 714.5,-519 687.5,-519"/> +<text xml:space="preserve" text-anchor="start" x="690.5" y="-525.75" font-family="Times,serif" font-size="14.00">size</text> +<polygon fill="#e0ffe0" stroke="none" points="714.5,-519 714.5,-541.5 753.5,-541.5 753.5,-519 714.5,-519"/> +<polygon fill="none" stroke="black" points="714.5,-519 714.5,-541.5 753.5,-541.5 753.5,-519 714.5,-519"/> +<text xml:space="preserve" text-anchor="start" x="722.38" y="-525.75" font-family="Times,serif" font-size="14.00">type</text> +<polygon fill="#e0ffe0" stroke="none" points="753.5,-519 753.5,-541.5 789.5,-541.5 789.5,-519 753.5,-519"/> +<polygon fill="none" stroke="black" points="753.5,-519 753.5,-541.5 789.5,-541.5 789.5,-519 753.5,-519"/> +<text xml:space="preserve" text-anchor="start" x="766.25" y="-525.75" font-family="Times,serif" font-size="14.00">id</text> +<polygon fill="none" stroke="black" points="662.75,-496.5 662.75,-519 687.5,-519 687.5,-496.5 662.75,-496.5"/> +<text xml:space="preserve" text-anchor="start" x="671.75" y="-503.25" font-family="Times,serif" font-size="14.00">0</text> +<polygon fill="none" stroke="black" points="687.5,-496.5 687.5,-519 714.5,-519 714.5,-496.5 687.5,-496.5"/> +<text xml:space="preserve" text-anchor="start" x="695.38" y="-503.25" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="714.5,-496.5 714.5,-519 753.5,-519 753.5,-496.5 714.5,-496.5"/> +<text xml:space="preserve" text-anchor="start" x="717.5" y="-503.25" font-family="Times,serif" font-size="14.00">String</text> +<polygon fill="none" stroke="black" points="753.5,-496.5 753.5,-519 789.5,-519 789.5,-496.5 753.5,-496.5"/> +<text xml:space="preserve" text-anchor="start" x="756.5" y="-503.25" font-family="Times,serif" font-size="14.00">name</text> +</g> +<!-- solec__seq_payload_switch->server_auth__seq --> <g id="edge5" class="edge"> -<title>solec__seq_payload_switch:case3->message__seq</title> -<path fill="none" stroke="black" stroke-width="2" d="M546.5,-489.5C566.11,-489.5 586.18,-485.1 605.06,-478.66"/> -<polygon fill="black" stroke="black" stroke-width="2" points="604.69,-482.52 612.88,-475.81 602.29,-475.95 604.69,-482.52"/> +<title>solec__seq_payload_switch:case3->server_auth__seq</title> +<path fill="none" stroke="black" stroke-width="2" d="M554.75,-518.75C583.74,-518.75 615.5,-518.79 643.66,-518.83"/> +<polygon fill="black" stroke="black" stroke-width="2" points="642.05,-522.33 652.05,-518.85 642.06,-515.33 642.05,-522.33"/> </g> <!-- success__seq --> <g id="node8" class="node"> <title>success__seq</title> -<polygon fill="#e0ffe0" stroke="none" points="651.88,-289.75 651.88,-312.25 676.62,-312.25 676.62,-289.75 651.88,-289.75"/> -<polygon fill="none" stroke="black" points="651.88,-289.75 651.88,-312.25 676.62,-312.25 676.62,-289.75 651.88,-289.75"/> -<text xml:space="preserve" text-anchor="start" x="654.88" y="-296.5" font-family="Times,serif" font-size="14.00">pos</text> -<polygon fill="#e0ffe0" stroke="none" points="676.62,-289.75 676.62,-312.25 703.62,-312.25 703.62,-289.75 676.62,-289.75"/> -<polygon fill="none" stroke="black" points="676.62,-289.75 676.62,-312.25 703.62,-312.25 703.62,-289.75 676.62,-289.75"/> -<text xml:space="preserve" text-anchor="start" x="679.62" y="-296.5" font-family="Times,serif" font-size="14.00">size</text> -<polygon fill="#e0ffe0" stroke="none" points="703.62,-289.75 703.62,-312.25 732.88,-312.25 732.88,-289.75 703.62,-289.75"/> -<polygon fill="none" stroke="black" points="703.62,-289.75 703.62,-312.25 732.88,-312.25 732.88,-289.75 703.62,-289.75"/> -<text xml:space="preserve" text-anchor="start" x="706.62" y="-296.5" font-family="Times,serif" font-size="14.00">type</text> -<polygon fill="#e0ffe0" stroke="none" points="732.88,-289.75 732.88,-312.25 749.38,-312.25 749.38,-289.75 732.88,-289.75"/> -<polygon fill="none" stroke="black" points="732.88,-289.75 732.88,-312.25 749.38,-312.25 749.38,-289.75 732.88,-289.75"/> -<text xml:space="preserve" text-anchor="start" x="735.88" y="-296.5" font-family="Times,serif" font-size="14.00">id</text> +<polygon fill="#e0ffe0" stroke="none" points="677.38,-413.75 677.38,-436.25 702.12,-436.25 702.12,-413.75 677.38,-413.75"/> +<polygon fill="none" stroke="black" points="677.38,-413.75 677.38,-436.25 702.12,-436.25 702.12,-413.75 677.38,-413.75"/> +<text xml:space="preserve" text-anchor="start" x="680.38" y="-420.5" font-family="Times,serif" font-size="14.00">pos</text> +<polygon fill="#e0ffe0" stroke="none" points="702.12,-413.75 702.12,-436.25 729.12,-436.25 729.12,-413.75 702.12,-413.75"/> +<polygon fill="none" stroke="black" points="702.12,-413.75 702.12,-436.25 729.12,-436.25 729.12,-413.75 702.12,-413.75"/> +<text xml:space="preserve" text-anchor="start" x="705.12" y="-420.5" font-family="Times,serif" font-size="14.00">size</text> +<polygon fill="#e0ffe0" stroke="none" points="729.12,-413.75 729.12,-436.25 758.38,-436.25 758.38,-413.75 729.12,-413.75"/> +<polygon fill="none" stroke="black" points="729.12,-413.75 729.12,-436.25 758.38,-436.25 758.38,-413.75 729.12,-413.75"/> +<text xml:space="preserve" text-anchor="start" x="732.12" y="-420.5" font-family="Times,serif" font-size="14.00">type</text> +<polygon fill="#e0ffe0" stroke="none" points="758.38,-413.75 758.38,-436.25 774.88,-436.25 774.88,-413.75 758.38,-413.75"/> +<polygon fill="none" stroke="black" points="758.38,-413.75 758.38,-436.25 774.88,-436.25 774.88,-413.75 758.38,-413.75"/> +<text xml:space="preserve" text-anchor="start" x="761.38" y="-420.5" font-family="Times,serif" font-size="14.00">id</text> </g> <!-- solec__seq_payload_switch->success__seq --> <g id="edge6" class="edge"> <title>solec__seq_payload_switch:case4->success__seq</title> -<path fill="none" stroke="black" stroke-width="2" d="M546.5,-467C598.23,-467 547.38,-394.88 581.5,-356 595.29,-340.29 614.51,-328.76 633.44,-320.43"/> -<polygon fill="black" stroke="black" stroke-width="2" points="633.18,-324.32 641.1,-317.28 630.52,-317.85 633.18,-324.32"/> +<path fill="none" stroke="black" stroke-width="2" d="M554.75,-496.25C571.9,-496.25 574.02,-486.84 589.75,-480 615.59,-468.76 644.49,-456.92 668.93,-447.12"/> +<polygon fill="black" stroke="black" stroke-width="2" points="668.66,-450.99 676.65,-444.03 666.06,-444.49 668.66,-450.99"/> </g> <!-- test__seq --> <g id="node9" class="node"> <title>test__seq</title> -<polygon fill="#e0ffe0" stroke="none" points="636.5,-207.75 636.5,-230.25 661.25,-230.25 661.25,-207.75 636.5,-207.75"/> -<polygon fill="none" stroke="black" points="636.5,-207.75 636.5,-230.25 661.25,-230.25 661.25,-207.75 636.5,-207.75"/> -<text xml:space="preserve" text-anchor="start" x="639.5" y="-214.5" font-family="Times,serif" font-size="14.00">pos</text> -<polygon fill="#e0ffe0" stroke="none" points="661.25,-207.75 661.25,-230.25 688.25,-230.25 688.25,-207.75 661.25,-207.75"/> -<polygon fill="none" stroke="black" points="661.25,-207.75 661.25,-230.25 688.25,-230.25 688.25,-207.75 661.25,-207.75"/> -<text xml:space="preserve" text-anchor="start" x="664.25" y="-214.5" font-family="Times,serif" font-size="14.00">size</text> -<polygon fill="#e0ffe0" stroke="none" points="688.25,-207.75 688.25,-230.25 727.25,-230.25 727.25,-207.75 688.25,-207.75"/> -<polygon fill="none" stroke="black" points="688.25,-207.75 688.25,-230.25 727.25,-230.25 727.25,-207.75 688.25,-207.75"/> -<text xml:space="preserve" text-anchor="start" x="696.12" y="-214.5" font-family="Times,serif" font-size="14.00">type</text> -<polygon fill="#e0ffe0" stroke="none" points="727.25,-207.75 727.25,-230.25 764.75,-230.25 764.75,-207.75 727.25,-207.75"/> -<polygon fill="none" stroke="black" points="727.25,-207.75 727.25,-230.25 764.75,-230.25 764.75,-207.75 727.25,-207.75"/> -<text xml:space="preserve" text-anchor="start" x="740.75" y="-214.5" font-family="Times,serif" font-size="14.00">id</text> -<polygon fill="none" stroke="black" points="636.5,-185.25 636.5,-207.75 661.25,-207.75 661.25,-185.25 636.5,-185.25"/> -<text xml:space="preserve" text-anchor="start" x="645.5" y="-192" font-family="Times,serif" font-size="14.00">0</text> -<polygon fill="none" stroke="black" points="661.25,-185.25 661.25,-207.75 688.25,-207.75 688.25,-185.25 661.25,-185.25"/> -<text xml:space="preserve" text-anchor="start" x="671.38" y="-192" font-family="Times,serif" font-size="14.00">1</text> -<polygon fill="none" stroke="black" points="688.25,-185.25 688.25,-207.75 727.25,-207.75 727.25,-185.25 688.25,-185.25"/> -<text xml:space="preserve" text-anchor="start" x="701" y="-192" font-family="Times,serif" font-size="14.00">u1</text> -<polygon fill="none" stroke="black" points="727.25,-185.25 727.25,-207.75 764.75,-207.75 764.75,-185.25 727.25,-185.25"/> -<text xml:space="preserve" text-anchor="start" x="730.25" y="-192" font-family="Times,serif" font-size="14.00">num1</text> -<polygon fill="none" stroke="black" points="636.5,-162.75 636.5,-185.25 661.25,-185.25 661.25,-162.75 636.5,-162.75"/> -<text xml:space="preserve" text-anchor="start" x="645.5" y="-169.5" font-family="Times,serif" font-size="14.00">1</text> -<polygon fill="none" stroke="black" points="661.25,-162.75 661.25,-185.25 688.25,-185.25 688.25,-162.75 661.25,-162.75"/> -<text xml:space="preserve" text-anchor="start" x="671.38" y="-169.5" font-family="Times,serif" font-size="14.00">8</text> -<polygon fill="none" stroke="black" points="688.25,-162.75 688.25,-185.25 727.25,-185.25 727.25,-162.75 688.25,-162.75"/> -<text xml:space="preserve" text-anchor="start" x="694.62" y="-169.5" font-family="Times,serif" font-size="14.00">u8be</text> -<polygon fill="none" stroke="black" points="727.25,-162.75 727.25,-185.25 764.75,-185.25 764.75,-162.75 727.25,-162.75"/> -<text xml:space="preserve" text-anchor="start" x="730.25" y="-169.5" font-family="Times,serif" font-size="14.00">time1</text> -<polygon fill="none" stroke="black" points="636.5,-140.25 636.5,-162.75 661.25,-162.75 661.25,-140.25 636.5,-140.25"/> -<text xml:space="preserve" text-anchor="start" x="645.5" y="-147" font-family="Times,serif" font-size="14.00">9</text> -<polygon fill="none" stroke="black" points="661.25,-140.25 661.25,-162.75 688.25,-162.75 688.25,-140.25 661.25,-140.25"/> -<text xml:space="preserve" text-anchor="start" x="669.12" y="-147" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="688.25,-140.25 688.25,-162.75 727.25,-162.75 727.25,-140.25 688.25,-140.25"/> -<text xml:space="preserve" text-anchor="start" x="691.25" y="-147" font-family="Times,serif" font-size="14.00">String</text> -<polygon fill="none" stroke="black" points="727.25,-140.25 727.25,-162.75 764.75,-162.75 764.75,-140.25 727.25,-140.25"/> -<text xml:space="preserve" text-anchor="start" x="735.88" y="-147" font-family="Times,serif" font-size="14.00">str1</text> -<polygon fill="none" stroke="black" points="636.5,-117.75 636.5,-140.25 661.25,-140.25 661.25,-117.75 636.5,-117.75"/> -<text xml:space="preserve" text-anchor="start" x="643.25" y="-124.5" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="661.25,-117.75 661.25,-140.25 688.25,-140.25 688.25,-117.75 661.25,-117.75"/> -<text xml:space="preserve" text-anchor="start" x="671.38" y="-124.5" font-family="Times,serif" font-size="14.00">2</text> -<polygon fill="none" stroke="black" points="688.25,-117.75 688.25,-140.25 727.25,-140.25 727.25,-117.75 688.25,-117.75"/> -<text xml:space="preserve" text-anchor="start" x="694.62" y="-124.5" font-family="Times,serif" font-size="14.00">u2be</text> -<polygon fill="none" stroke="black" points="727.25,-117.75 727.25,-140.25 764.75,-140.25 764.75,-117.75 727.25,-117.75"/> -<text xml:space="preserve" text-anchor="start" x="730.25" y="-124.5" font-family="Times,serif" font-size="14.00">num2</text> -<polygon fill="none" stroke="black" points="636.5,-95.25 636.5,-117.75 661.25,-117.75 661.25,-95.25 636.5,-95.25"/> -<text xml:space="preserve" text-anchor="start" x="643.25" y="-102" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="661.25,-95.25 661.25,-117.75 688.25,-117.75 688.25,-95.25 661.25,-95.25"/> -<text xml:space="preserve" text-anchor="start" x="669.12" y="-102" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="688.25,-95.25 688.25,-117.75 727.25,-117.75 727.25,-95.25 688.25,-95.25"/> -<text xml:space="preserve" text-anchor="start" x="691.25" y="-102" font-family="Times,serif" font-size="14.00">String</text> -<polygon fill="none" stroke="black" points="727.25,-95.25 727.25,-117.75 764.75,-117.75 764.75,-95.25 727.25,-95.25"/> -<text xml:space="preserve" text-anchor="start" x="735.88" y="-102" font-family="Times,serif" font-size="14.00">str2</text> -<polygon fill="none" stroke="black" points="636.5,-72.75 636.5,-95.25 661.25,-95.25 661.25,-72.75 636.5,-72.75"/> -<text xml:space="preserve" text-anchor="start" x="643.25" y="-79.5" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="661.25,-72.75 661.25,-95.25 688.25,-95.25 688.25,-72.75 661.25,-72.75"/> -<text xml:space="preserve" text-anchor="start" x="671.38" y="-79.5" font-family="Times,serif" font-size="14.00">4</text> -<polygon fill="none" stroke="black" points="688.25,-72.75 688.25,-95.25 727.25,-95.25 727.25,-72.75 688.25,-72.75"/> -<text xml:space="preserve" text-anchor="start" x="694.62" y="-79.5" font-family="Times,serif" font-size="14.00">u4be</text> -<polygon fill="none" stroke="black" points="727.25,-72.75 727.25,-95.25 764.75,-95.25 764.75,-72.75 727.25,-72.75"/> -<text xml:space="preserve" text-anchor="start" x="730.25" y="-79.5" font-family="Times,serif" font-size="14.00">num3</text> -<polygon fill="none" stroke="black" points="636.5,-50.25 636.5,-72.75 661.25,-72.75 661.25,-50.25 636.5,-50.25"/> -<text xml:space="preserve" text-anchor="start" x="643.25" y="-57" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="661.25,-50.25 661.25,-72.75 688.25,-72.75 688.25,-50.25 661.25,-50.25"/> -<text xml:space="preserve" text-anchor="start" x="669.12" y="-57" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="688.25,-50.25 688.25,-72.75 727.25,-72.75 727.25,-50.25 688.25,-50.25"/> -<text xml:space="preserve" text-anchor="start" x="691.25" y="-57" font-family="Times,serif" font-size="14.00">String</text> -<polygon fill="none" stroke="black" points="727.25,-50.25 727.25,-72.75 764.75,-72.75 764.75,-50.25 727.25,-50.25"/> -<text xml:space="preserve" text-anchor="start" x="735.88" y="-57" font-family="Times,serif" font-size="14.00">str3</text> -<polygon fill="none" stroke="black" points="636.5,-27.75 636.5,-50.25 661.25,-50.25 661.25,-27.75 636.5,-27.75"/> -<text xml:space="preserve" text-anchor="start" x="643.25" y="-34.5" font-family="Times,serif" font-size="14.00">...</text> -<polygon fill="none" stroke="black" points="661.25,-27.75 661.25,-50.25 688.25,-50.25 688.25,-27.75 661.25,-27.75"/> -<text xml:space="preserve" text-anchor="start" x="671.38" y="-34.5" font-family="Times,serif" font-size="14.00">8</text> -<polygon fill="none" stroke="black" points="688.25,-27.75 688.25,-50.25 727.25,-50.25 727.25,-27.75 688.25,-27.75"/> -<text xml:space="preserve" text-anchor="start" x="694.62" y="-34.5" font-family="Times,serif" font-size="14.00">u8be</text> -<polygon fill="none" stroke="black" points="727.25,-27.75 727.25,-50.25 764.75,-50.25 764.75,-27.75 727.25,-27.75"/> -<text xml:space="preserve" text-anchor="start" x="730.25" y="-34.5" font-family="Times,serif" font-size="14.00">num4</text> +<polygon fill="#e0ffe0" stroke="none" points="662,-331.75 662,-354.25 686.75,-354.25 686.75,-331.75 662,-331.75"/> +<polygon fill="none" stroke="black" points="662,-331.75 662,-354.25 686.75,-354.25 686.75,-331.75 662,-331.75"/> +<text xml:space="preserve" text-anchor="start" x="665" y="-338.5" font-family="Times,serif" font-size="14.00">pos</text> +<polygon fill="#e0ffe0" stroke="none" points="686.75,-331.75 686.75,-354.25 713.75,-354.25 713.75,-331.75 686.75,-331.75"/> +<polygon fill="none" stroke="black" points="686.75,-331.75 686.75,-354.25 713.75,-354.25 713.75,-331.75 686.75,-331.75"/> +<text xml:space="preserve" text-anchor="start" x="689.75" y="-338.5" font-family="Times,serif" font-size="14.00">size</text> +<polygon fill="#e0ffe0" stroke="none" points="713.75,-331.75 713.75,-354.25 752.75,-354.25 752.75,-331.75 713.75,-331.75"/> +<polygon fill="none" stroke="black" points="713.75,-331.75 713.75,-354.25 752.75,-354.25 752.75,-331.75 713.75,-331.75"/> +<text xml:space="preserve" text-anchor="start" x="721.62" y="-338.5" font-family="Times,serif" font-size="14.00">type</text> +<polygon fill="#e0ffe0" stroke="none" points="752.75,-331.75 752.75,-354.25 790.25,-354.25 790.25,-331.75 752.75,-331.75"/> +<polygon fill="none" stroke="black" points="752.75,-331.75 752.75,-354.25 790.25,-354.25 790.25,-331.75 752.75,-331.75"/> +<text xml:space="preserve" text-anchor="start" x="766.25" y="-338.5" font-family="Times,serif" font-size="14.00">id</text> +<polygon fill="none" stroke="black" points="662,-309.25 662,-331.75 686.75,-331.75 686.75,-309.25 662,-309.25"/> +<text xml:space="preserve" text-anchor="start" x="671" y="-316" font-family="Times,serif" font-size="14.00">0</text> +<polygon fill="none" stroke="black" points="686.75,-309.25 686.75,-331.75 713.75,-331.75 713.75,-309.25 686.75,-309.25"/> +<text xml:space="preserve" text-anchor="start" x="696.88" y="-316" font-family="Times,serif" font-size="14.00">1</text> +<polygon fill="none" stroke="black" points="713.75,-309.25 713.75,-331.75 752.75,-331.75 752.75,-309.25 713.75,-309.25"/> +<text xml:space="preserve" text-anchor="start" x="726.5" y="-316" font-family="Times,serif" font-size="14.00">u1</text> +<polygon fill="none" stroke="black" points="752.75,-309.25 752.75,-331.75 790.25,-331.75 790.25,-309.25 752.75,-309.25"/> +<text xml:space="preserve" text-anchor="start" x="755.75" y="-316" font-family="Times,serif" font-size="14.00">num1</text> +<polygon fill="none" stroke="black" points="662,-286.75 662,-309.25 686.75,-309.25 686.75,-286.75 662,-286.75"/> +<text xml:space="preserve" text-anchor="start" x="671" y="-293.5" font-family="Times,serif" font-size="14.00">1</text> +<polygon fill="none" stroke="black" points="686.75,-286.75 686.75,-309.25 713.75,-309.25 713.75,-286.75 686.75,-286.75"/> +<text xml:space="preserve" text-anchor="start" x="696.88" y="-293.5" font-family="Times,serif" font-size="14.00">8</text> +<polygon fill="none" stroke="black" points="713.75,-286.75 713.75,-309.25 752.75,-309.25 752.75,-286.75 713.75,-286.75"/> +<text xml:space="preserve" text-anchor="start" x="720.12" y="-293.5" font-family="Times,serif" font-size="14.00">u8be</text> +<polygon fill="none" stroke="black" points="752.75,-286.75 752.75,-309.25 790.25,-309.25 790.25,-286.75 752.75,-286.75"/> +<text xml:space="preserve" text-anchor="start" x="755.75" y="-293.5" font-family="Times,serif" font-size="14.00">time1</text> +<polygon fill="none" stroke="black" points="662,-264.25 662,-286.75 686.75,-286.75 686.75,-264.25 662,-264.25"/> +<text xml:space="preserve" text-anchor="start" x="671" y="-271" font-family="Times,serif" font-size="14.00">9</text> +<polygon fill="none" stroke="black" points="686.75,-264.25 686.75,-286.75 713.75,-286.75 713.75,-264.25 686.75,-264.25"/> +<text xml:space="preserve" text-anchor="start" x="694.62" y="-271" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="713.75,-264.25 713.75,-286.75 752.75,-286.75 752.75,-264.25 713.75,-264.25"/> +<text xml:space="preserve" text-anchor="start" x="716.75" y="-271" font-family="Times,serif" font-size="14.00">String</text> +<polygon fill="none" stroke="black" points="752.75,-264.25 752.75,-286.75 790.25,-286.75 790.25,-264.25 752.75,-264.25"/> +<text xml:space="preserve" text-anchor="start" x="761.38" y="-271" font-family="Times,serif" font-size="14.00">str1</text> +<polygon fill="none" stroke="black" points="662,-241.75 662,-264.25 686.75,-264.25 686.75,-241.75 662,-241.75"/> +<text xml:space="preserve" text-anchor="start" x="668.75" y="-248.5" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="686.75,-241.75 686.75,-264.25 713.75,-264.25 713.75,-241.75 686.75,-241.75"/> +<text xml:space="preserve" text-anchor="start" x="696.88" y="-248.5" font-family="Times,serif" font-size="14.00">2</text> +<polygon fill="none" stroke="black" points="713.75,-241.75 713.75,-264.25 752.75,-264.25 752.75,-241.75 713.75,-241.75"/> +<text xml:space="preserve" text-anchor="start" x="720.12" y="-248.5" font-family="Times,serif" font-size="14.00">u2be</text> +<polygon fill="none" stroke="black" points="752.75,-241.75 752.75,-264.25 790.25,-264.25 790.25,-241.75 752.75,-241.75"/> +<text xml:space="preserve" text-anchor="start" x="755.75" y="-248.5" font-family="Times,serif" font-size="14.00">num2</text> +<polygon fill="none" stroke="black" points="662,-219.25 662,-241.75 686.75,-241.75 686.75,-219.25 662,-219.25"/> +<text xml:space="preserve" text-anchor="start" x="668.75" y="-226" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="686.75,-219.25 686.75,-241.75 713.75,-241.75 713.75,-219.25 686.75,-219.25"/> +<text xml:space="preserve" text-anchor="start" x="694.62" y="-226" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="713.75,-219.25 713.75,-241.75 752.75,-241.75 752.75,-219.25 713.75,-219.25"/> +<text xml:space="preserve" text-anchor="start" x="716.75" y="-226" font-family="Times,serif" font-size="14.00">String</text> +<polygon fill="none" stroke="black" points="752.75,-219.25 752.75,-241.75 790.25,-241.75 790.25,-219.25 752.75,-219.25"/> +<text xml:space="preserve" text-anchor="start" x="761.38" y="-226" font-family="Times,serif" font-size="14.00">str2</text> +<polygon fill="none" stroke="black" points="662,-196.75 662,-219.25 686.75,-219.25 686.75,-196.75 662,-196.75"/> +<text xml:space="preserve" text-anchor="start" x="668.75" y="-203.5" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="686.75,-196.75 686.75,-219.25 713.75,-219.25 713.75,-196.75 686.75,-196.75"/> +<text xml:space="preserve" text-anchor="start" x="696.88" y="-203.5" font-family="Times,serif" font-size="14.00">4</text> +<polygon fill="none" stroke="black" points="713.75,-196.75 713.75,-219.25 752.75,-219.25 752.75,-196.75 713.75,-196.75"/> +<text xml:space="preserve" text-anchor="start" x="720.12" y="-203.5" font-family="Times,serif" font-size="14.00">u4be</text> +<polygon fill="none" stroke="black" points="752.75,-196.75 752.75,-219.25 790.25,-219.25 790.25,-196.75 752.75,-196.75"/> +<text xml:space="preserve" text-anchor="start" x="755.75" y="-203.5" font-family="Times,serif" font-size="14.00">num3</text> +<polygon fill="none" stroke="black" points="662,-174.25 662,-196.75 686.75,-196.75 686.75,-174.25 662,-174.25"/> +<text xml:space="preserve" text-anchor="start" x="668.75" y="-181" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="686.75,-174.25 686.75,-196.75 713.75,-196.75 713.75,-174.25 686.75,-174.25"/> +<text xml:space="preserve" text-anchor="start" x="694.62" y="-181" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="713.75,-174.25 713.75,-196.75 752.75,-196.75 752.75,-174.25 713.75,-174.25"/> +<text xml:space="preserve" text-anchor="start" x="716.75" y="-181" font-family="Times,serif" font-size="14.00">String</text> +<polygon fill="none" stroke="black" points="752.75,-174.25 752.75,-196.75 790.25,-196.75 790.25,-174.25 752.75,-174.25"/> +<text xml:space="preserve" text-anchor="start" x="761.38" y="-181" font-family="Times,serif" font-size="14.00">str3</text> +<polygon fill="none" stroke="black" points="662,-151.75 662,-174.25 686.75,-174.25 686.75,-151.75 662,-151.75"/> +<text xml:space="preserve" text-anchor="start" x="668.75" y="-158.5" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="686.75,-151.75 686.75,-174.25 713.75,-174.25 713.75,-151.75 686.75,-151.75"/> +<text xml:space="preserve" text-anchor="start" x="696.88" y="-158.5" font-family="Times,serif" font-size="14.00">8</text> +<polygon fill="none" stroke="black" points="713.75,-151.75 713.75,-174.25 752.75,-174.25 752.75,-151.75 713.75,-151.75"/> +<text xml:space="preserve" text-anchor="start" x="720.12" y="-158.5" font-family="Times,serif" font-size="14.00">u8be</text> +<polygon fill="none" stroke="black" points="752.75,-151.75 752.75,-174.25 790.25,-174.25 790.25,-151.75 752.75,-151.75"/> +<text xml:space="preserve" text-anchor="start" x="755.75" y="-158.5" font-family="Times,serif" font-size="14.00">num4</text> </g> <!-- solec__seq_payload_switch->test__seq --> <g id="edge7" class="edge"> <title>solec__seq_payload_switch:case5->test__seq</title> -<path fill="none" stroke="black" stroke-width="2" d="M546.5,-444.5C585.83,-444.5 564.52,-306.48 581.5,-271 591.84,-249.4 606.2,-228.32 621.35,-209.29"/> -<polygon fill="black" stroke="black" stroke-width="2" points="623.07,-212.72 626.68,-202.76 617.65,-208.29 623.07,-212.72"/> +<path fill="none" stroke="black" stroke-width="2" d="M554.75,-473.75C593.05,-473.75 568.44,-426.83 589.75,-395 605.89,-370.89 626.28,-347.1 646.3,-326.09"/> +<polygon fill="black" stroke="black" stroke-width="2" points="647.71,-329.67 652.14,-320.05 642.68,-324.8 647.71,-329.67"/> +</g> +<!-- user_auth__seq --> +<g id="node10" class="node"> +<title>user_auth__seq</title> +<polygon fill="#e0ffe0" stroke="none" points="662.75,-73.25 662.75,-95.75 687.5,-95.75 687.5,-73.25 662.75,-73.25"/> +<polygon fill="none" stroke="black" points="662.75,-73.25 662.75,-95.75 687.5,-95.75 687.5,-73.25 662.75,-73.25"/> +<text xml:space="preserve" text-anchor="start" x="665.75" y="-80" font-family="Times,serif" font-size="14.00">pos</text> +<polygon fill="#e0ffe0" stroke="none" points="687.5,-73.25 687.5,-95.75 714.5,-95.75 714.5,-73.25 687.5,-73.25"/> +<polygon fill="none" stroke="black" points="687.5,-73.25 687.5,-95.75 714.5,-95.75 714.5,-73.25 687.5,-73.25"/> +<text xml:space="preserve" text-anchor="start" x="690.5" y="-80" font-family="Times,serif" font-size="14.00">size</text> +<polygon fill="#e0ffe0" stroke="none" points="714.5,-73.25 714.5,-95.75 753.5,-95.75 753.5,-73.25 714.5,-73.25"/> +<polygon fill="none" stroke="black" points="714.5,-73.25 714.5,-95.75 753.5,-95.75 753.5,-73.25 714.5,-73.25"/> +<text xml:space="preserve" text-anchor="start" x="722.38" y="-80" font-family="Times,serif" font-size="14.00">type</text> +<polygon fill="#e0ffe0" stroke="none" points="753.5,-73.25 753.5,-95.75 789.5,-95.75 789.5,-73.25 753.5,-73.25"/> +<polygon fill="none" stroke="black" points="753.5,-73.25 753.5,-95.75 789.5,-95.75 789.5,-73.25 753.5,-73.25"/> +<text xml:space="preserve" text-anchor="start" x="766.25" y="-80" font-family="Times,serif" font-size="14.00">id</text> +<polygon fill="none" stroke="black" points="662.75,-50.75 662.75,-73.25 687.5,-73.25 687.5,-50.75 662.75,-50.75"/> +<text xml:space="preserve" text-anchor="start" x="671.75" y="-57.5" font-family="Times,serif" font-size="14.00">0</text> +<polygon fill="none" stroke="black" points="687.5,-50.75 687.5,-73.25 714.5,-73.25 714.5,-50.75 687.5,-50.75"/> +<text xml:space="preserve" text-anchor="start" x="695.38" y="-57.5" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="714.5,-50.75 714.5,-73.25 753.5,-73.25 753.5,-50.75 714.5,-50.75"/> +<text xml:space="preserve" text-anchor="start" x="717.5" y="-57.5" font-family="Times,serif" font-size="14.00">String</text> +<polygon fill="none" stroke="black" points="753.5,-50.75 753.5,-73.25 789.5,-73.25 789.5,-50.75 753.5,-50.75"/> +<text xml:space="preserve" text-anchor="start" x="756.5" y="-57.5" font-family="Times,serif" font-size="14.00">name</text> +<polygon fill="none" stroke="black" points="662.75,-28.25 662.75,-50.75 687.5,-50.75 687.5,-28.25 662.75,-28.25"/> +<text xml:space="preserve" text-anchor="start" x="669.5" y="-35" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="687.5,-28.25 687.5,-50.75 714.5,-50.75 714.5,-28.25 687.5,-28.25"/> +<text xml:space="preserve" text-anchor="start" x="695.38" y="-35" font-family="Times,serif" font-size="14.00">...</text> +<polygon fill="none" stroke="black" points="714.5,-28.25 714.5,-50.75 753.5,-50.75 753.5,-28.25 714.5,-28.25"/> +<text xml:space="preserve" text-anchor="start" x="717.5" y="-35" font-family="Times,serif" font-size="14.00">String</text> +<polygon fill="none" stroke="black" points="753.5,-28.25 753.5,-50.75 789.5,-50.75 789.5,-28.25 753.5,-28.25"/> +<text xml:space="preserve" text-anchor="start" x="759.88" y="-35" font-family="Times,serif" font-size="14.00">pass</text> +</g> +<!-- solec__seq_payload_switch->user_auth__seq --> +<g id="edge8" class="edge"> +<title>solec__seq_payload_switch:case6->user_auth__seq</title> +<path fill="none" stroke="black" stroke-width="2" d="M554.75,-451.25C625.24,-451.25 550.5,-194.55 589.75,-136 603.14,-116.03 623.79,-100.96 644.96,-89.82"/> +<polygon fill="black" stroke="black" stroke-width="2" points="644.92,-93.74 652.32,-86.16 641.8,-87.47 644.92,-93.74"/> </g> <!-- string__seq --> <g id="node7" class="node"> <title>string__seq</title> -<polygon fill="#e0ffe0" stroke="none" points="855.75,-416.25 855.75,-438.75 880.5,-438.75 880.5,-416.25 855.75,-416.25"/> -<polygon fill="none" stroke="black" points="855.75,-416.25 855.75,-438.75 880.5,-438.75 880.5,-416.25 855.75,-416.25"/> -<text xml:space="preserve" text-anchor="start" x="858.75" y="-423" font-family="Times,serif" font-size="14.00">pos</text> -<polygon fill="#e0ffe0" stroke="none" points="880.5,-416.25 880.5,-438.75 952.5,-438.75 952.5,-416.25 880.5,-416.25"/> -<polygon fill="none" stroke="black" points="880.5,-416.25 880.5,-438.75 952.5,-438.75 952.5,-416.25 880.5,-416.25"/> -<text xml:space="preserve" text-anchor="start" x="906" y="-423" font-family="Times,serif" font-size="14.00">size</text> -<polygon fill="#e0ffe0" stroke="none" points="952.5,-416.25 952.5,-438.75 1017.75,-438.75 1017.75,-416.25 952.5,-416.25"/> -<polygon fill="none" stroke="black" points="952.5,-416.25 952.5,-438.75 1017.75,-438.75 1017.75,-416.25 952.5,-416.25"/> -<text xml:space="preserve" text-anchor="start" x="973.5" y="-423" font-family="Times,serif" font-size="14.00">type</text> -<polygon fill="#e0ffe0" stroke="none" points="1017.75,-416.25 1017.75,-438.75 1089.75,-438.75 1089.75,-416.25 1017.75,-416.25"/> -<polygon fill="none" stroke="black" points="1017.75,-416.25 1017.75,-438.75 1089.75,-438.75 1089.75,-416.25 1017.75,-416.25"/> -<text xml:space="preserve" text-anchor="start" x="1048.5" y="-423" font-family="Times,serif" font-size="14.00">id</text> -<polygon fill="none" stroke="black" points="855.75,-393.75 855.75,-416.25 880.5,-416.25 880.5,-393.75 855.75,-393.75"/> -<text xml:space="preserve" text-anchor="start" x="864.75" y="-400.5" font-family="Times,serif" font-size="14.00">0</text> -<polygon fill="none" stroke="black" points="880.5,-393.75 880.5,-416.25 952.5,-416.25 952.5,-393.75 880.5,-393.75"/> -<text xml:space="preserve" text-anchor="start" x="913.12" y="-400.5" font-family="Times,serif" font-size="14.00">2</text> -<polygon fill="none" stroke="black" points="952.5,-393.75 952.5,-416.25 1017.75,-416.25 1017.75,-393.75 952.5,-393.75"/> -<text xml:space="preserve" text-anchor="start" x="972" y="-400.5" font-family="Times,serif" font-size="14.00">u2be</text> -<polygon fill="none" stroke="black" points="1017.75,-393.75 1017.75,-416.25 1089.75,-416.25 1089.75,-393.75 1017.75,-393.75"/> -<text xml:space="preserve" text-anchor="start" x="1020.75" y="-400.5" font-family="Times,serif" font-size="14.00">len_payload</text> -<polygon fill="none" stroke="black" points="855.75,-371.25 855.75,-393.75 880.5,-393.75 880.5,-371.25 855.75,-371.25"/> -<text xml:space="preserve" text-anchor="start" x="864.75" y="-378" font-family="Times,serif" font-size="14.00">2</text> -<polygon fill="none" stroke="black" points="880.5,-371.25 880.5,-393.75 952.5,-393.75 952.5,-371.25 880.5,-371.25"/> -<text xml:space="preserve" text-anchor="start" x="883.5" y="-378" font-family="Times,serif" font-size="14.00">len_payload</text> -<polygon fill="none" stroke="black" points="952.5,-371.25 952.5,-393.75 1017.75,-393.75 1017.75,-371.25 952.5,-371.25"/> -<text xml:space="preserve" text-anchor="start" x="955.5" y="-378" font-family="Times,serif" font-size="14.00">str(UTF-8)</text> -<polygon fill="none" stroke="black" points="1017.75,-371.25 1017.75,-393.75 1089.75,-393.75 1089.75,-371.25 1017.75,-371.25"/> -<text xml:space="preserve" text-anchor="start" x="1032.38" y="-378" font-family="Times,serif" font-size="14.00">payload</text> -</g> -<!-- auth__seq->string__seq --> -<g id="edge9" class="edge"> -<title>auth__seq:name_type->string__seq</title> -<path fill="none" stroke="black" stroke-width="2" d="M765,-801C919.93,-801 958.96,-559.88 968.63,-453.94"/> -<polygon fill="black" stroke="black" stroke-width="2" points="971.98,-455.89 969.34,-445.63 965,-455.29 971.98,-455.89"/> +<polygon fill="#e0ffe0" stroke="none" points="898.5,-286.25 898.5,-308.75 923.25,-308.75 923.25,-286.25 898.5,-286.25"/> +<polygon fill="none" stroke="black" points="898.5,-286.25 898.5,-308.75 923.25,-308.75 923.25,-286.25 898.5,-286.25"/> +<text xml:space="preserve" text-anchor="start" x="901.5" y="-293" font-family="Times,serif" font-size="14.00">pos</text> +<polygon fill="#e0ffe0" stroke="none" points="923.25,-286.25 923.25,-308.75 995.25,-308.75 995.25,-286.25 923.25,-286.25"/> +<polygon fill="none" stroke="black" points="923.25,-286.25 923.25,-308.75 995.25,-308.75 995.25,-286.25 923.25,-286.25"/> +<text xml:space="preserve" text-anchor="start" x="948.75" y="-293" font-family="Times,serif" font-size="14.00">size</text> +<polygon fill="#e0ffe0" stroke="none" points="995.25,-286.25 995.25,-308.75 1060.5,-308.75 1060.5,-286.25 995.25,-286.25"/> +<polygon fill="none" stroke="black" points="995.25,-286.25 995.25,-308.75 1060.5,-308.75 1060.5,-286.25 995.25,-286.25"/> +<text xml:space="preserve" text-anchor="start" x="1016.25" y="-293" font-family="Times,serif" font-size="14.00">type</text> +<polygon fill="#e0ffe0" stroke="none" points="1060.5,-286.25 1060.5,-308.75 1132.5,-308.75 1132.5,-286.25 1060.5,-286.25"/> +<polygon fill="none" stroke="black" points="1060.5,-286.25 1060.5,-308.75 1132.5,-308.75 1132.5,-286.25 1060.5,-286.25"/> +<text xml:space="preserve" text-anchor="start" x="1091.25" y="-293" font-family="Times,serif" font-size="14.00">id</text> +<polygon fill="none" stroke="black" points="898.5,-263.75 898.5,-286.25 923.25,-286.25 923.25,-263.75 898.5,-263.75"/> +<text xml:space="preserve" text-anchor="start" x="907.5" y="-270.5" font-family="Times,serif" font-size="14.00">0</text> +<polygon fill="none" stroke="black" points="923.25,-263.75 923.25,-286.25 995.25,-286.25 995.25,-263.75 923.25,-263.75"/> +<text xml:space="preserve" text-anchor="start" x="955.88" y="-270.5" font-family="Times,serif" font-size="14.00">2</text> +<polygon fill="none" stroke="black" points="995.25,-263.75 995.25,-286.25 1060.5,-286.25 1060.5,-263.75 995.25,-263.75"/> +<text xml:space="preserve" text-anchor="start" x="1014.75" y="-270.5" font-family="Times,serif" font-size="14.00">u2be</text> +<polygon fill="none" stroke="black" points="1060.5,-263.75 1060.5,-286.25 1132.5,-286.25 1132.5,-263.75 1060.5,-263.75"/> +<text xml:space="preserve" text-anchor="start" x="1063.5" y="-270.5" font-family="Times,serif" font-size="14.00">len_payload</text> +<polygon fill="none" stroke="black" points="898.5,-241.25 898.5,-263.75 923.25,-263.75 923.25,-241.25 898.5,-241.25"/> +<text xml:space="preserve" text-anchor="start" x="907.5" y="-248" font-family="Times,serif" font-size="14.00">2</text> +<polygon fill="none" stroke="black" points="923.25,-241.25 923.25,-263.75 995.25,-263.75 995.25,-241.25 923.25,-241.25"/> +<text xml:space="preserve" text-anchor="start" x="926.25" y="-248" font-family="Times,serif" font-size="14.00">len_payload</text> +<polygon fill="none" stroke="black" points="995.25,-241.25 995.25,-263.75 1060.5,-263.75 1060.5,-241.25 995.25,-241.25"/> +<text xml:space="preserve" text-anchor="start" x="998.25" y="-248" font-family="Times,serif" font-size="14.00">str(UTF-8)</text> +<polygon fill="none" stroke="black" points="1060.5,-241.25 1060.5,-263.75 1132.5,-263.75 1132.5,-241.25 1060.5,-241.25"/> +<text xml:space="preserve" text-anchor="start" x="1075.12" y="-248" font-family="Times,serif" font-size="14.00">payload</text> </g> -<!-- auth__seq->string__seq --> +<!-- message__seq->string__seq --> <g id="edge10" class="edge"> -<title>auth__seq:pass_type->string__seq</title> -<path fill="none" stroke="black" stroke-width="2" d="M746,-766.25C746,-732.78 793.73,-772.06 819.75,-751 913.62,-675.03 951.08,-529.45 964.72,-453.63"/> -<polygon fill="black" stroke="black" stroke-width="2" points="967.87,-455.95 966.13,-445.5 960.98,-454.76 967.87,-455.95"/> +<title>message__seq:source_type->string__seq</title> +<path fill="none" stroke="black" stroke-width="2" d="M804.38,-676.5C961.91,-676.5 1001.56,-430.85 1011.36,-323.84"/> +<polygon fill="black" stroke="black" stroke-width="2" points="1014.71,-325.69 1012.08,-315.43 1007.74,-325.09 1014.71,-325.69"/> </g> <!-- message__seq->string__seq --> <g id="edge11" class="edge"> -<title>message__seq:source_type->string__seq</title> -<path fill="none" stroke="black" stroke-width="2" d="M778.88,-450.5C798.31,-450.5 818.55,-448.29 838.31,-444.83"/> -<polygon fill="black" stroke="black" stroke-width="2" points="837.38,-448.57 846.57,-443.29 836.1,-441.69 837.38,-448.57"/> +<title>message__seq:target_type->string__seq</title> +<path fill="none" stroke="black" stroke-width="2" d="M804.38,-654C953.61,-654 997.73,-426.47 1010.04,-324"/> +<polygon fill="black" stroke="black" stroke-width="2" points="1013.32,-326.07 1010.98,-315.73 1006.37,-325.27 1013.32,-326.07"/> </g> <!-- message__seq->string__seq --> <g id="edge12" class="edge"> -<title>message__seq:target_type->string__seq</title> -<path fill="none" stroke="black" stroke-width="2" d="M778.88,-428C797.55,-428 817.17,-426.92 836.46,-425.24"/> -<polygon fill="black" stroke="black" stroke-width="2" points="835.12,-428.88 844.75,-424.46 834.47,-421.91 835.12,-428.88"/> +<title>message__seq:content_type->string__seq</title> +<path fill="none" stroke="black" stroke-width="2" d="M804.38,-609C937.55,-609 989.63,-416.41 1006.99,-323.72"/> +<polygon fill="black" stroke="black" stroke-width="2" points="1010.11,-326.11 1008.44,-315.64 1003.22,-324.86 1010.11,-326.11"/> </g> -<!-- message__seq->string__seq --> +<!-- server_auth__seq->string__seq --> <g id="edge13" class="edge"> -<title>message__seq:content_type->string__seq</title> -<path fill="none" stroke="black" stroke-width="2" d="M778.88,-383C797.61,-383 817.3,-384.04 836.66,-385.66"/> -<polygon fill="black" stroke="black" stroke-width="2" points="834.71,-389 844.98,-386.41 835.34,-382.03 834.71,-389"/> +<title>server_auth__seq:name_type->string__seq</title> +<path fill="none" stroke="black" stroke-width="2" d="M790.5,-507.75C892.25,-507.75 962.29,-390.84 994.46,-322.73"/> +<polygon fill="black" stroke="black" stroke-width="2" points="996.83,-325.95 997.84,-315.4 990.47,-323.01 996.83,-325.95"/> </g> <!-- string__seq->string__seq --> <g id="edge14" class="edge"> <title>string__seq:len_payload_type->string__seq:payload_size</title> -<path fill="none" stroke="#404040" d="M1082.95,-416.22C1117.56,-435.5 1097.76,-460.75 985.12,-460.75 879.94,-460.75 855.72,-425.4 881.16,-400.64"/> -<polygon fill="#404040" stroke="#404040" points="883.19,-403.5 888.93,-394.6 878.89,-397.98 883.19,-403.5"/> +<path fill="none" stroke="#404040" d="M1127.57,-286.22C1164.49,-305.5 1144.06,-330.75 1027.88,-330.75 918.9,-330.75 894.17,-295.1 921.97,-270.33"/> +<polygon fill="#404040" stroke="#404040" points="923.9,-273.25 929.96,-264.55 919.8,-267.58 923.9,-273.25"/> </g> <!-- test__seq->string__seq --> <g id="edge15" class="edge"> <title>test__seq:str1_type->string__seq</title> -<path fill="none" stroke="black" stroke-width="2" d="M765.75,-151.5C870.26,-151.5 931.06,-282.87 956.91,-356.47"/> -<polygon fill="black" stroke="black" stroke-width="2" points="953.1,-356.13 959.64,-364.46 959.72,-353.86 953.1,-356.13"/> +<path fill="none" stroke="black" stroke-width="2" d="M791.25,-275.5C819.65,-275.5 850.08,-275.46 879.06,-275.4"/> +<polygon fill="black" stroke="black" stroke-width="2" points="877.49,-278.9 887.48,-275.38 877.47,-271.9 877.49,-278.9"/> </g> <!-- test__seq->string__seq --> <g id="edge16" class="edge"> <title>test__seq:str2_type->string__seq</title> -<path fill="none" stroke="black" stroke-width="2" d="M765.75,-106.5C885.7,-106.5 941.2,-271.78 961.75,-356.37"/> -<polygon fill="black" stroke="black" stroke-width="2" points="957.98,-355.62 963.67,-364.55 964.79,-354.01 957.98,-355.62"/> +<path fill="none" stroke="black" stroke-width="2" d="M791.25,-230.5C820.16,-230.5 850.78,-234.13 879.77,-239.32"/> +<polygon fill="black" stroke="black" stroke-width="2" points="877.34,-242.43 887.82,-240.83 878.63,-235.55 877.34,-242.43"/> </g> <!-- test__seq->string__seq --> <g id="edge17" class="edge"> <title>test__seq:str3_type->string__seq</title> -<path fill="none" stroke="black" stroke-width="2" d="M765.75,-61.5C901.43,-61.5 949.95,-261.03 965.36,-355.95"/> -<polygon fill="black" stroke="black" stroke-width="2" points="961.66,-354.92 966.65,-364.27 968.57,-353.85 961.66,-354.92"/> +<path fill="none" stroke="black" stroke-width="2" d="M791.25,-185.5C845.95,-185.5 903.13,-208.94 945.92,-231.82"/> +<polygon fill="black" stroke="black" stroke-width="2" points="942.82,-234.11 953.27,-235.85 946.19,-227.98 942.82,-234.11"/> +</g> +<!-- user_auth__seq->string__seq --> +<g id="edge18" class="edge"> +<title>user_auth__seq:name_type->string__seq</title> +<path fill="none" stroke="black" stroke-width="2" d="M790.5,-62C885.81,-62 956.69,-164.53 991.17,-227.32"/> +<polygon fill="black" stroke="black" stroke-width="2" points="987.34,-227.59 995.15,-234.74 993.51,-224.28 987.34,-227.59"/> +</g> +<!-- user_auth__seq->string__seq --> +<g id="edge19" class="edge"> +<title>user_auth__seq:pass_type->string__seq</title> +<path fill="none" stroke="black" stroke-width="2" d="M790.5,-39.5C893.15,-39.5 963.02,-158.41 994.87,-227.24"/> +<polygon fill="black" stroke="black" stroke-width="2" points="990.91,-227 998.22,-234.67 997.29,-224.11 990.91,-227"/> </g> </g> </svg> diff --git a/docs/rfc.html b/docs/rfc.html index 84b5c0a..99a6a34 100644 --- a/docs/rfc.html +++ b/docs/rfc.html @@ -1220,7 +1220,7 @@ li > p:last-of-type:only-child { </tr></thead> <tfoot><tr> <td class="left">bt</td> -<td class="center">Expires 16 October 2026</td> +<td class="center">Expires 20 October 2026</td> <td class="right">[Page]</td> </tr></tfoot> </table> @@ -1233,12 +1233,12 @@ li > p:last-of-type:only-child { <dd class="internet-draft">SOLEC</dd> <dt class="label-published">Published:</dt> <dd class="published"> -<time datetime="2026-04-14" class="published">14 April 2026</time> +<time datetime="2026-04-18" class="published">18 April 2026</time> </dd> <dt class="label-intended-status">Intended Status:</dt> <dd class="intended-status">Experimental</dd> <dt class="label-expires">Expires:</dt> -<dd class="expires"><time datetime="2026-10-16">16 October 2026</time></dd> +<dd class="expires"><time datetime="2026-10-20">20 October 2026</time></dd> <dt class="label-authors">Author:</dt> <dd class="authors"> <div class="author"> @@ -1274,7 +1274,7 @@ SOLEC system.<a href="#section-abstract-1" class="pilcrow">¶</a></p> time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."<a href="#section-boilerplate.1-3" class="pilcrow">¶</a></p> <p id="section-boilerplate.1-4"> - This Internet-Draft will expire on 16 October 2026.<a href="#section-boilerplate.1-4" class="pilcrow">¶</a></p> + This Internet-Draft will expire on 20 October 2026.<a href="#section-boilerplate.1-4" class="pilcrow">¶</a></p> </section> </div> <div id="copyright"> @@ -1350,21 +1350,33 @@ SOLEC system.<a href="#section-abstract-1" class="pilcrow">¶</a></p> <p id="section-toc.1-1.2.2.4.2.3.1"><a href="#section-2.4.3" class="auto internal xref">2.4.3</a>. <a href="#name-handshake" class="internal xref">Handshake</a></p> </li> <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.2.2.4.2.4"> - <p id="section-toc.1-1.2.2.4.2.4.1"><a href="#section-2.4.4" class="auto internal xref">2.4.4</a>. <a href="#name-auth" class="internal xref">Auth</a></p> + <p id="section-toc.1-1.2.2.4.2.4.1"><a href="#section-2.4.4" class="auto internal xref">2.4.4</a>. <a href="#name-userauth" class="internal xref">UserAuth</a></p> </li> <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.2.2.4.2.5"> - <p id="section-toc.1-1.2.2.4.2.5.1"><a href="#section-2.4.5" class="auto internal xref">2.4.5</a>. <a href="#name-message" class="internal xref">Message</a></p> + <p id="section-toc.1-1.2.2.4.2.5.1"><a href="#section-2.4.5" class="auto internal xref">2.4.5</a>. <a href="#name-serverauth" class="internal xref">ServerAuth</a></p> </li> <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.2.2.4.2.6"> - <p id="section-toc.1-1.2.2.4.2.6.1"><a href="#section-2.4.6" class="auto internal xref">2.4.6</a>. <a href="#name-test" class="internal xref">Test</a></p> + <p id="section-toc.1-1.2.2.4.2.6.1"><a href="#section-2.4.6" class="auto internal xref">2.4.6</a>. <a href="#name-message" class="internal xref">Message</a></p> +</li> + <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.2.2.4.2.7"> + <p id="section-toc.1-1.2.2.4.2.7.1"><a href="#section-2.4.7" class="auto internal xref">2.4.7</a>. <a href="#name-test" class="internal xref">Test</a></p> </li> </ul> </li> <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.2.2.5"> <p id="section-toc.1-1.2.2.5.1"><a href="#section-2.5" class="auto internal xref">2.5</a>. <a href="#name-sequential-operations" class="internal xref">Sequential operations</a></p> +</li> + <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.2.2.6"> + <p id="section-toc.1-1.2.2.6.1"><a href="#section-2.6" class="auto internal xref">2.6</a>. <a href="#name-client-server-connection-in" class="internal xref">Client-Server connection initialisation</a></p> +</li> + <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.2.2.7"> + <p id="section-toc.1-1.2.2.7.1"><a href="#section-2.7" class="auto internal xref">2.7</a>. <a href="#name-exchanging-messages-between" class="internal xref">Exchanging messages between servers</a></p> <ul class="compact toc ulBare ulEmpty"> -<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.2.2.5.2.1"> - <p id="section-toc.1-1.2.2.5.2.1.1"><a href="#section-2.5.1" class="auto internal xref">2.5.1</a>. <a href="#name-connection-initialisation" class="internal xref">Connection initialisation</a></p> +<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.2.2.7.2.1"> + <p id="section-toc.1-1.2.2.7.2.1.1"><a href="#section-2.7.1" class="auto internal xref">2.7.1</a>. <a href="#name-authentication" class="internal xref">Authentication</a></p> +</li> + <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.2.2.7.2.2"> + <p id="section-toc.1-1.2.2.7.2.2.1"><a href="#section-2.7.2" class="auto internal xref">2.7.2</a>. <a href="#name-server-server-connection-in" class="internal xref">Server-Server connection initialisation</a></p> </li> </ul> </li> @@ -1582,7 +1594,7 @@ Text is encoded using UTF-8.<a href="#section-2.3.3-1" class="pilcrow">¶</a></p </tr> <tr> <td class="text-left" rowspan="1" colspan="1">0x04</td> - <td class="text-left" rowspan="1" colspan="1">Auth</td> + <td class="text-left" rowspan="1" colspan="1">UserAuth</td> <td class="text-left" rowspan="1" colspan="1">C</td> </tr> <tr> @@ -1591,6 +1603,11 @@ Text is encoded using UTF-8.<a href="#section-2.3.3-1" class="pilcrow">¶</a></p <td class="text-left" rowspan="1" colspan="1">SC</td> </tr> <tr> + <td class="text-left" rowspan="1" colspan="1">0x06</td> + <td class="text-left" rowspan="1" colspan="1">ServerAuth</td> + <td class="text-left" rowspan="1" colspan="1">S</td> + </tr> + <tr> <td class="text-left" rowspan="1" colspan="1">0xFF</td> <td class="text-left" rowspan="1" colspan="1">Test</td> <td class="text-left" rowspan="1" colspan="1">R</td> @@ -1641,7 +1658,7 @@ Text is encoded using UTF-8.<a href="#section-2.3.3-1" class="pilcrow">¶</a></p <tbody> <tr> <td class="text-left" rowspan="1" colspan="1">0x01</td> - <td class="text-left" rowspan="1" colspan="1">Auth failed. Invalid username or password.</td> + <td class="text-left" rowspan="1" colspan="1">Client auth failed. Invalid username or password.</td> </tr> <tr> <td class="text-left" rowspan="1" colspan="1">0x02</td> @@ -1713,10 +1730,10 @@ different auth method will be used.<a href="#section-2.4.3.1-1" class="pilcrow"> </div> </section> </div> -<div id="auth"> +<div id="userauth"> <section id="section-2.4.4"> - <h4 id="name-auth"> -<a href="#section-2.4.4" class="section-number selfRef">2.4.4. </a><a href="#name-auth" class="section-name selfRef">Auth</a> + <h4 id="name-userauth"> +<a href="#section-2.4.4" class="section-number selfRef">2.4.4. </a><a href="#name-userauth" class="section-name selfRef">UserAuth</a> </h4> <table class="center" id="table-6"> <caption><a href="#table-6" class="selfRef">Table 6</a></caption> @@ -1739,10 +1756,10 @@ different auth method will be used.<a href="#section-2.4.3.1-1" class="pilcrow"> </table> </section> </div> -<div id="message"> +<div id="serverauth"> <section id="section-2.4.5"> - <h4 id="name-message"> -<a href="#section-2.4.5" class="section-number selfRef">2.4.5. </a><a href="#name-message" class="section-name selfRef">Message</a> + <h4 id="name-serverauth"> +<a href="#section-2.4.5" class="section-number selfRef">2.4.5. </a><a href="#name-serverauth" class="section-name selfRef">ServerAuth</a> </h4> <table class="center" id="table-7"> <caption><a href="#table-7" class="selfRef">Table 7</a></caption> @@ -1755,6 +1772,28 @@ different auth method will be used.<a href="#section-2.4.3.1-1" class="pilcrow"> <tbody> <tr> <td class="text-left" rowspan="1" colspan="1">string</td> + <td class="text-left" rowspan="1" colspan="1">name</td> + </tr> + </tbody> + </table> +</section> +</div> +<div id="message"> +<section id="section-2.4.6"> + <h4 id="name-message"> +<a href="#section-2.4.6" class="section-number selfRef">2.4.6. </a><a href="#name-message" class="section-name selfRef">Message</a> + </h4> +<table class="center" id="table-8"> + <caption><a href="#table-8" class="selfRef">Table 8</a></caption> +<thead> + <tr> + <th class="text-left" rowspan="1" colspan="1">Type</th> + <th class="text-left" rowspan="1" colspan="1">Name</th> + </tr> + </thead> + <tbody> + <tr> + <td class="text-left" rowspan="1" colspan="1">string</td> <td class="text-left" rowspan="1" colspan="1">source_address</td> </tr> <tr> @@ -1774,14 +1813,14 @@ different auth method will be used.<a href="#section-2.4.3.1-1" class="pilcrow"> </section> </div> <div id="test"> -<section id="section-2.4.6"> +<section id="section-2.4.7"> <h4 id="name-test"> -<a href="#section-2.4.6" class="section-number selfRef">2.4.6. </a><a href="#name-test" class="section-name selfRef">Test</a> +<a href="#section-2.4.7" class="section-number selfRef">2.4.7. </a><a href="#name-test" class="section-name selfRef">Test</a> </h4> -<p id="section-2.4.6-1">Test payload is used for encoder and decoders testing. Clients and servers -should ignore this kind of payload.<a href="#section-2.4.6-1" class="pilcrow">¶</a></p> -<table class="center" id="table-8"> - <caption><a href="#table-8" class="selfRef">Table 8</a></caption> +<p id="section-2.4.7-1">Test payload is used for encoder and decoders testing. Clients and servers +should ignore this kind of payload.<a href="#section-2.4.7-1" class="pilcrow">¶</a></p> +<table class="center" id="table-9"> + <caption><a href="#table-9" class="selfRef">Table 9</a></caption> <thead> <tr> <th class="text-left" rowspan="1" colspan="1">Type</th> @@ -1835,12 +1874,14 @@ should ignore this kind of payload.<a href="#section-2.4.6-1" class="pilcrow">¶ <p id="section-2.5-1">Some operations require multiple rounds of communication. In this case payloads are send in a sequence. Payload that is not part of this specific operation (for example incoming message) cannot interrupt this process.<a href="#section-2.5-1" class="pilcrow">¶</a></p> -<div id="connection-initialisation"> -<section id="section-2.5.1"> - <h4 id="name-connection-initialisation"> -<a href="#section-2.5.1" class="section-number selfRef">2.5.1. </a><a href="#name-connection-initialisation" class="section-name selfRef">Connection initialisation</a> - </h4> -<div class="lang-ascii-art sourcecode" id="section-2.5.1-1"> +</section> +</div> +<div id="client-server-connection-initialisation"> +<section id="section-2.6"> + <h3 id="name-client-server-connection-in"> +<a href="#section-2.6" class="section-number selfRef">2.6. </a><a href="#name-client-server-connection-in" class="section-name selfRef">Client-Server connection initialisation</a> + </h3> +<div class="lang-ascii-art sourcecode" id="section-2.6-1"> <pre>+--------+ +--------+ | Client | | Server | +----+---+ +----+---+ @@ -1851,19 +1892,72 @@ specific operation (for example incoming message) cannot interrupt this process. | Send [Handshake] | +--------------------------->| | | - | +- If [ver_major] does not match server - | | protocol version close the connection + | +- If [ver_major] does not match + | | server protocol version close + | | the connection. | | - | Send [Auth] | + | Send [UserAuth] | +--------------------------->| | | | Send [Error 0x01] | - |<---------------------------+- If [username] or [password] does not match - | | and close the connection + |<---------------------------+- If [username] or [password] + | | does not match and close + | | the connection. + | | + | Send [Sucesss] | + |<---------------------------+ +</pre><a href="#section-2.6-1" class="pilcrow">¶</a> +</div> +</section> +</div> +<div id="exchanging-messages-between-servers"> +<section id="section-2.7"> + <h3 id="name-exchanging-messages-between"> +<a href="#section-2.7" class="section-number selfRef">2.7. </a><a href="#name-exchanging-messages-between" class="section-name selfRef">Exchanging messages between servers</a> + </h3> +<p id="section-2.7-1">Exchanging messages between SOLEC servers is a core concept behind the project. +Sending message to user residing on a different server require estabilishing a +connection between both servers.<a href="#section-2.7-1" class="pilcrow">¶</a></p> +<div id="authentication"> +<section id="section-2.7.1"> + <h4 id="name-authentication"> +<a href="#section-2.7.1" class="section-number selfRef">2.7.1. </a><a href="#name-authentication" class="section-name selfRef">Authentication</a> + </h4> +<p id="section-2.7.1-1">Server authentication is crucial to prevent message spoofing and other forms of +abuse. Server cannot use same auth process as clients because that would require +creating account for each server on any other server which is impossible. +Possible solution are TLS or other public key based protocol.<a href="#section-2.7.1-1" class="pilcrow">¶</a></p> +<p id="section-2.7.1-2">As for now the issue remains open and server authorization uses mock +[ServerAuth] payload which specifies just the connecting server name. +This is obviously insecure.<a href="#section-2.7.1-2" class="pilcrow">¶</a></p> +</section> +</div> +<div id="server-server-connection-initialisation"> +<section id="section-2.7.2"> + <h4 id="name-server-server-connection-in"> +<a href="#section-2.7.2" class="section-number selfRef">2.7.2. </a><a href="#name-server-server-connection-in" class="section-name selfRef">Server-Server connection initialisation</a> + </h4> +<div class="lang-ascii-art sourcecode" id="section-2.7.2-1"> +<pre>+--------+ +--------+ +| Server | | Server | ++----+---+ +----+---+ + | | + | Initialise TCP connection | + +--------------------------->| + | | + | Send [Handshake] | + +--------------------------->| + | | + | +- If [ver_major] does not match + | | server protocol version close + | | the connection. + | | + | Send [ServerAuth] | + +--------------------------->| | | | Send [Sucesss] | |<---------------------------+ -</pre><a href="#section-2.5.1-1" class="pilcrow">¶</a> +</pre><a href="#section-2.7.2-1" class="pilcrow">¶</a> </div> </section> </div> diff --git a/docs/rfc.md b/docs/rfc.md index 8296cfa..854d737 100644 --- a/docs/rfc.md +++ b/docs/rfc.md @@ -180,7 +180,6 @@ Payload is always empty for this type. |------|-----------------------------------------------------------| | 0x01 | Client auth failed. Invalid username or password. | | 0x02 | Not found. User or channel cannot access user or channel. | -| 0x03 | Server auth failed. Unknown name. | ### Handshake @@ -246,7 +245,7 @@ Some operations require multiple rounds of communication. In this case payloads are send in a sequence. Payload that is not part of this specific operation (for example incoming message) cannot interrupt this process. -### Client-Server connection initialisation +## Client-Server connection initialisation ~~~ ascii-art +--------+ +--------+ @@ -259,20 +258,40 @@ specific operation (for example incoming message) cannot interrupt this process. | Send [Handshake] | +--------------------------->| | | - | +- If [ver_major] does not match server - | | protocol version close the connection + | +- If [ver_major] does not match + | | server protocol version close + | | the connection. | | - | Send [UserAuth] | + | Send [UserAuth] | +--------------------------->| | | | Send [Error 0x01] | - |<---------------------------+- If [username] or [password] does not match - | | and close the connection + |<---------------------------+- If [username] or [password] + | | does not match and close + | | the connection. | | | Send [Sucesss] | |<---------------------------+ ~~~ +## Exchanging messages between servers + +Exchanging messages between SOLEC servers is a core concept behind the project. +Sending message to user residing on a different server require estabilishing a +connection between both servers. + + +### Authentication + +Server authentication is crucial to prevent message spoofing and other forms of +abuse. Server cannot use same auth process as clients because that would require +creating account for each server on any other server which is impossible. +Possible solution are TLS or other public key based protocol. + +As for now the issue remains open and server authorization uses mock +[ServerAuth] payload which specifies just the connecting server name. +This is obviously insecure. + ### Server-Server connection initialisation ~~~ ascii-art @@ -286,22 +305,13 @@ specific operation (for example incoming message) cannot interrupt this process. | Send [Handshake] | +--------------------------->| | | - | +- If [ver_major] does not match server - | | protocol version close the connection + | +- If [ver_major] does not match + | | server protocol version close + | | the connection. | | | Send [ServerAuth] | +--------------------------->| | | - | Send [Error 0x03] | - |<---------------------------+- If [name] is not present in known public - | | keys list. - | | | Send [Sucesss] | |<---------------------------+ ~~~ - -## Server to server operation - -Exchanging messages between SOLEC servers is a core concept behind the project. -Sending message to user residing on a different server require estabilishing a -connection between both servers. diff --git a/docs/rfc.txt b/docs/rfc.txt index ffd2f67..83cd029 100644 --- a/docs/rfc.txt +++ b/docs/rfc.txt @@ -34,9 +34,10 @@ Table of Contents 2.4.6. Message 2.4.7. Test 2.5. Sequential operations - 2.5.1. Client-Server connection initialisation - 2.5.2. Server-Server connection initialisation - 2.6. Server + 2.6. Client-Server connection initialisation + 2.7. Exchanging messages between servers + 2.7.1. Authentication + 2.7.2. Server-Server connection initialisation 1. Introduction @@ -167,7 +168,7 @@ Table of Contents +------+------------+------------+ | 0x03 | Handshake | SC | +------+------------+------------+ - | 0x04 | UserAuth | C | + | 0x04 | UserAuth | C | +------+------------+------------+ | 0x05 | Message | SC | +------+------------+------------+ @@ -202,8 +203,6 @@ Table of Contents | 0x02 | Not found. User or channel cannot access user or | | | channel. | +------+------------------------------------------------------------+ - | 0x03 | Server auth failed. Unknown name. | - +------+------------------------------------------------------------+ Table 3 @@ -310,7 +309,7 @@ Table of Contents this specific operation (for example incoming message) cannot interrupt this process. -2.5.1. Client-Server connection initialisation +2.6. Client-Server connection initialisation +--------+ +--------+ | Client | | Server | @@ -322,20 +321,40 @@ Table of Contents | Send [Handshake] | +--------------------------->| | | - | +- If [ver_major] does not match server - | | protocol version close the connection + | +- If [ver_major] does not match + | | server protocol version close + | | the connection. | | - | Send [UserAuth] | + | Send [UserAuth] | +--------------------------->| | | | Send [Error 0x01] | - |<---------------------------+- If [username] or [password] does not match - | | and close the connection + |<---------------------------+- If [username] or [password] + | | does not match and close + | | the connection. | | | Send [Sucesss] | |<---------------------------+ -2.5.2. Server-Server connection initialisation +2.7. Exchanging messages between servers + + Exchanging messages between SOLEC servers is a core concept behind + the project. Sending message to user residing on a different server + require estabilishing a connection between both servers. + +2.7.1. Authentication + + Server authentication is crucial to prevent message spoofing and + other forms of abuse. Server cannot use same auth process as clients + because that would require creating account for each server on any + other server which is impossible. Possible solution are TLS or other + public key based protocol. + + As for now the issue remains open and server authorization uses mock + [ServerAuth] payload which specifies just the connecting server name. + This is obviously insecure. + +2.7.2. Server-Server connection initialisation +--------+ +--------+ | Server | | Server | @@ -347,17 +366,12 @@ Table of Contents | Send [Handshake] | +--------------------------->| | | - | +- If [ver_major] does not match server - | | protocol version close the connection + | +- If [ver_major] does not match + | | server protocol version close + | | the connection. | | | Send [ServerAuth] | +--------------------------->| | | - | Send [Error 0x03] | - |<---------------------------+- If [name] is not present in known public - | | keys list. - | | | Send [Sucesss] | |<---------------------------+ - -2.6. Server |
