Files
vRp.CD2g_test/.github/images/server-gdi.svg
2023-12-25 11:45:58 +08:00

1 line
30 KiB
XML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1204" height="1723"><desc>title%20This%20is%20a%20title%0A%0Aparticipantspacing%20equal%0A%23participantspacing%20gives%20manual%20control%20of%20spacing%20between%20participants%2C%20equal%3A%20equal%20distance%20between%20all%20participants%2C%20number%20i.e.%2020.5%3A%20minimum%20space%0A%0Aactor%20Client%23lightgreen%0A%23supported%20participant%20types%3A%20participant%2C%20actor%2C%20boundary%2C%20control%2C%20entity%2C%20database%0A%0Aparticipantgroup%20%23lightgreen%20Minotaur%20Server%0Aparticipant%20Server%0Aparticipant%20Shunt%0Aabox%20left%20of%20Shunt%3A%20System%20%E6%B6%88%E6%81%AF%E5%B0%86%E5%85%A8%E5%B1%80%E5%8D%95%E7%BA%BF%E7%A8%8B%E6%89%A7%E8%A1%8C%EF%BC%8CShunt%20%E6%B6%88%E6%81%AF%E5%B0%86%E4%BC%9A%5Cn%E5%9C%A8%E8%BF%9E%E6%8E%A5%E5%BD%93%E5%89%8D%E6%89%80%E5%9C%A8%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%E5%86%85%E6%89%A7%E8%A1%8C%E3%80%82%E7%9B%B8%E5%90%8C%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%E7%9A%84%5Cn%E6%B6%88%E6%81%AF%E5%B0%86%E4%B8%B2%E8%A1%8C%E5%A4%84%E7%90%86%EF%BC%8C%E4%B8%8D%E5%90%8C%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%E6%B6%88%E6%81%AF%E5%B9%B6%E8%A1%8C%E5%A4%84%E7%90%86%E3%80%82%5Cn%5Cn%E8%BF%9E%E6%8E%A5%E5%8F%AF%E6%A0%B9%E6%8D%AE%E4%B8%9A%E5%8A%A1%E5%9C%BA%E6%99%AF%E7%81%B5%E6%B4%BB%E7%9A%84%E9%80%9A%E8%BF%87%20srv.UseShunt%20%E6%9D%A5%5Cn%E5%88%87%E6%8D%A2%E5%BD%93%E5%89%8D%E6%89%80%E5%A4%84%E7%9A%84%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%0Aabox%20left%20of%20Shunt%3A%20%E5%BC%82%E6%AD%A5%E6%B6%88%E6%81%AF%5Cn%5Cn(SystemMessage)%20srv.PushAsyncMessage%5Cn(ShuntMessage)%20srv.PushShuntAsyncMessage%5Cn(SystemMessage)%20srv.PushUniqueAsyncMessage%5Cn(ShuntMessage)%20srv.PushUniqueShuntAsyncMessage%5Cn%5Cn%20Unique%20%E6%B6%88%E6%81%AF%E5%B0%86%E4%BC%9A%E5%9C%A8%E4%B8%8A%E4%B8%80%E4%B8%AA%E7%9B%B8%E5%90%8C%E6%B6%88%E6%81%AF%E6%9C%AA%E6%89%A7%E8%A1%8C%E5%AE%8C%E6%AF%95%5Cn%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%BF%BD%E7%95%A5%E5%90%8E%E7%BB%AD%E6%B6%88%E6%81%AF%0Aend%0A%0AClient-%3EServer%3A%E9%80%9A%E8%BF%87%20WebSocket%E3%80%81TCP%E3%80%81UDP%E3%80%81KCP%20%E7%AD%89%E5%8D%8F%E8%AE%AE%E4%B8%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%BB%BA%E7%AB%8B%E8%BF%9E%E6%8E%A5%0Aloop%20Write%20Loop%0AServer%20-%3EClient%3A%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%E5%8C%85%0Aabox%20left%20of%20Server%3A%20%E6%95%B0%E6%8D%AE%E5%8C%85%E5%B0%86%E8%A2%AB%E5%86%99%E5%85%A5%E5%AF%B9%E5%BA%94%E8%BF%9E%E6%8E%A5%E7%9A%84%E7%BC%93%E5%86%B2%E5%8C%BA%E5%86%85%E7%AD%89%E5%BE%85%E5%8F%91%E9%80%81%20%EF%BC%8C%E5%86%99%E5%85%A5%5Cn%E7%BC%93%E5%86%B2%E5%8C%BA%E5%90%8E%E9%80%BB%E8%BE%91%E8%A7%86%E4%B8%BA%E5%A4%84%E7%90%86%E5%AE%8C%E6%AF%95%EF%BC%8C%E7%BD%91%E7%BB%9C%20IO%20%E4%B8%8D%E4%BC%9A%E9%98%BB%E5%A1%9E%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%0Aend%0AServer%20--%3EShunt%3A%20(SystemMessage)%20OnConnectionOpenedEvent%0AShunt%20--%3E%20Shunt%3A%20%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86%0AServer%20--%3EShunt%3A%20(ShuntMessage)%20OnConnectionOpenedAfterEvent%0AShunt%20--%3E%20Shunt%3A%20%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86%0A%0Aloop%20Read%20Loop%0AClient-%3EServer%3A%E5%8F%91%E9%80%81%E6%95%B0%E6%8D%AE%E5%8C%85%0Aabox%20right%20of%20Client%3A%20%E6%95%B0%E6%8D%AE%E5%8C%85%E5%B0%86%E8%A2%AB%E5%8F%91%E9%80%81%E5%88%B0%E8%BF%9E%E6%8E%A5%E5%AF%B9%E5%BA%94%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%E7%9A%84%E7%BC%93%E5%86%B2%E5%8C%BA%E5%86%85%0AServer%20--%3EShunt%3A%20(ShuntMessage)%20OnConnectionReceivePacketEvent%0AShunt%20--%3E%20Shunt%3A%20%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86%0AShunt%20--%3E%20Server%3A%20%E5%9B%9E%E5%A4%8D%E6%B6%88%E6%81%AF%0AServer%20--%3E%20Server%3A%20%E5%86%99%E5%85%A5%20Write%20Loop%0Aend%0A%0AClient%20%3C-%3EServer%3A%20%E6%96%AD%E5%BC%80%E6%88%96%E5%85%B3%E9%97%AD%E8%BF%9E%E6%8E%A5%0AServer%20--%3EShunt%3A%20(ShuntMessage)%20OnConnectionClosedEvent%0AShunt%20--%3E%20Shunt%3A%20%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="1204" height="1723"/></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="16.5pt" font-style="normal" font-weight="normal" text-decoration="normal" x="536.999446028349" y="26.3876361" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">This is a title</text></g><g><g><path fill="lightgreen" stroke="black" paint-order="fill stroke markers" d=" M 533.0462462299479 89.71796273999999 L 1135.6177506432825 89.71796273999999 L 1135.6177506432825 1714.932470139 L 533.0462462299479 1714.932470139 L 533.0462462299479 89.71796273999999" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="777.5102439810488" y="114.34642309999998" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Minotaur Server</text></g></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 79.1629083 179.17204911899995 L 79.1629083 1714.932470139" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 583.1947456737917 179.17204911899995 L 583.1947456737917 1714.932470139" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1087.2265830475833 179.17204911899995 L 1087.2265830475833 1714.932470139" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/></g><g><g><path fill="lightgreen" stroke="black" paint-order="fill stroke markers" d=" M 89.190210018 104.75891531699999 A 10.027301717999999 10.027301717999999 0 1 1 89.19020500434955 104.7488880169532 M 79.1629083 114.78621703499998 L 79.1629083 136.24816106299997 M 66.496842972 122.52659029099999 L 91.828973628 122.52659029099999 M 79.1629083 136.24816106299997 L 66.496842972 156.30276449899998 M 79.1629083 136.24816106299997 L 91.828973628 156.30276449899998" stroke-miterlimit="10" stroke-width="2.990598758" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="58.95174191816406" y="173.89452189899998" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Client</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 541.8421249299479 131.674304139 L 624.5473664176354 131.674304139 L 624.5473664176354 179.17204911899998 L 541.8421249299479 179.17204911899998 L 541.8421249299479 131.674304139 Z" stroke-miterlimit="10" stroke-width="2.814681184" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="560.9291817089479" y="161.58029171899997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Server</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1047.631294151884 131.674304139 L 1126.8218719432825 131.674304139 L 1126.8218719432825 179.17204911899998 L 1047.631294151884 179.17204911899998 L 1047.631294151884 131.674304139 Z" stroke-miterlimit="10" stroke-width="2.814681184" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1066.718350930884" y="161.58029171899997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Shunt</text></g></g><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1087.2265830475833 278.565478429 L 1078.4307043475833 278.565478429 M 722.4866509321146 214.35556391900002 L 1062.5981226875833 214.35556391900002 L 1078.4307043475833 278.565478429 L 1062.5981226875833 342.775392939 L 722.4866509321146 342.775392939 L 706.6540692721146 278.565478429 L 722.4866509321146 214.35556391900002" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="731.2825296321146" y="238.984024279" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">System 消息将全局单线程执行Shunt 消息将会</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="731.2825296321146" y="256.575781679" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">在连接当前所在分流渠道内执行。相同分流渠道的</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="731.2825296321146" y="274.167539079" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">消息将串行处理,不同分流渠道消息并行处理。</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="731.2825296321146" y="291.759296479" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve"></text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="731.2825296321146" y="309.351053879" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">连接可根据业务场景灵活的通过 srv.UseShunt </text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="731.2825296321146" y="326.942811279" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">切换当前所处的分流渠道</text></g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1087.2265830475833 459.7605796490001 L 1078.4307043475833 459.7605796490001 M 675.9011101606302 369.16302903900004 L 1062.5981226875833 369.16302903900004 L 1078.4307043475833 459.7605796490001 L 1062.5981226875833 550.3581302590001 L 675.9011101606302 550.3581302590001 L 660.0685285006302 459.7605796490001 L 675.9011101606302 369.16302903900004" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="684.6969888606302" y="393.7914893990001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">异步消息</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="684.6969888606302" y="411.3832467990001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve"></text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="684.6969888606302" y="428.9750041990001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">(SystemMessage) srv.PushAsyncMessage</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="684.6969888606302" y="446.56676159900013" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">(ShuntMessage) srv.PushShuntAsyncMessage</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="684.6969888606302" y="464.15851899900014" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">(SystemMessage) srv.PushUniqueAsyncMessage</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="684.6969888606302" y="481.75027639900014" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">(ShuntMessage) srv.PushUniqueShuntAsyncMessage</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="684.6969888606302" y="499.34203379900015" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve"></text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="684.6969888606302" y="516.9337911990001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve"> Unique 消息将会在上一个相同消息未执行完毕</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="684.6969888606302" y="534.5255485990001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">的情况下忽略后续消息</text></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="127.69283455525522" y="592.578348019" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">通过 WebSocket、TCP、UDP、KCP 等协议与服务器建立连接</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 79.1629083 599.6150509790001 L 568.7108654144583 599.6150509790001" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(583.1947456737917,599.6150509790001) translate(-583.1947456737917,-599.6150509790001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 568.5349478404584 592.2851520623334 L 583.1947456737917 599.6150509790001 L 568.5349478404584 606.9449498956668 Z"/></g></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="294.52885597859506" y="689.3330137190001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">写入数据包</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 583.1947456737917 696.3697166790001 L 93.64678855933333 696.3697166790001" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(79.1629083,696.3697166790001) translate(-79.1629083,-696.3697166790001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 93.82270613333333 689.0398177623334 L 79.1629083 696.3697166790001 L 93.82270613333333 703.6996155956668 Z"/></g></g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 583.1947456737917 751.7837524890002 L 574.3988669737917 751.7837524890002 M 178.8628946130104 722.7573527790001 L 558.5662853137917 722.7573527790001 L 574.3988669737917 751.7837524890002 L 558.5662853137917 780.8101521990002 L 178.8628946130104 780.8101521990002 L 163.03031295301042 751.7837524890002 L 178.8628946130104 722.7573527790001" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="187.65877331301044" y="747.3858131390002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">数据包将被写入对应连接的缓冲区内等待发送 ,写入</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="187.65877331301044" y="764.9775705390002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">缓冲区后逻辑视为处理完毕网络 IO 不会阻塞分流渠道</text></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="673.9257369925234" y="849.4180060590002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">(SystemMessage) OnConnectionOpenedEvent</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 583.1947456737917 856.4547090190002 L 1072.74270278825 856.4547090190002" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(1087.2265830475833,856.4547090190002) translate(-1087.2265830475833,-856.4547090190002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1072.5667852142499 849.1248101023335 L 1087.2265830475833 856.4547090190002 L 1072.5667852142499 863.7846079356669 Z"/></g></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1110.6822595809167" y="898.6749267790002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">消息处理</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1087.2265830475833 905.7116297390002 L 1157.5936126475833 905.7116297390002 L 1157.5936126475833 928.5809143590002 L 1101.7104633069166 928.5809143590002" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(1087.2265830475833,928.5809143590002) translate(-1087.2265830475833,-928.5809143590002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1101.8863808809167 921.2510154423335 L 1087.2265830475833 928.5809143590002 L 1101.8863808809167 935.9108132756669 Z"/></g></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="660.9658218313906" y="970.8011321190002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">(ShuntMessage) OnConnectionOpenedAfterEvent</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 583.1947456737917 977.8378350790002 L 1072.74270278825 977.8378350790002" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(1087.2265830475833,977.8378350790002) translate(-1087.2265830475833,-977.8378350790002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1072.5667852142499 970.5079361623335 L 1087.2265830475833 977.8378350790002 L 1072.5667852142499 985.1677339956669 Z"/></g></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1110.6822595809167" y="1020.0580528390002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">消息处理</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1087.2265830475833 1027.0947557990003 L 1157.5936126475833 1027.0947557990003 L 1157.5936126475833 1049.9640404190002 L 1101.7104633069166 1049.9640404190002" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(1087.2265830475833,1049.9640404190002) translate(-1087.2265830475833,-1049.9640404190002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1101.8863808809167 1042.6341415023335 L 1087.2265830475833 1049.9640404190002 L 1101.8863808809167 1057.293939335667 Z"/></g></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="294.52885597859506" y="1139.6820031590003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">发送数据包</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 79.1629083 1146.7187061190002 L 568.7108654144583 1146.7187061190002" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(583.1947456737917,1146.7187061190002) translate(-583.1947456737917,-1146.7187061190002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 568.5349478404584 1139.3888072023335 L 583.1947456737917 1146.7187061190002 L 568.5349478404584 1154.048605035667 Z"/></g></g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 79.1629083 1193.336863229 L 87.958787 1193.336863229 M 103.79136866 1173.1063422190002 L 429.24286727093744 1173.1063422190002 L 445.07544893093745 1193.336863229 L 429.24286727093744 1213.5673842390001 L 103.79136866 1213.5673842390001 L 87.958787 1193.336863229 L 103.79136866 1173.1063422190002" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="112.58724735999999" y="1197.734802579" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">数据包将被发送到连接对应分流渠道的缓冲区内</text></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="657.4654556204531" y="1255.7876019990001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">(ShuntMessage) OnConnectionReceivePacketEvent</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 583.1947456737917 1262.824304959 L 1072.74270278825 1262.824304959" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(1087.2265830475833,1262.824304959) translate(-1087.2265830475833,-1262.824304959)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1072.5667852142499 1255.4944060423334 L 1087.2265830475833 1262.824304959 L 1072.5667852142499 1270.1542038756668 Z"/></g></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1110.6822595809167" y="1305.044522719" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">消息处理</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1087.2265830475833 1312.0812256790002 L 1157.5936126475833 1312.0812256790002 L 1157.5936126475833 1334.9505102990001 L 1101.7104633069166 1334.9505102990001" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(1087.2265830475833,1334.9505102990001) translate(-1087.2265830475833,-1334.9505102990001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1101.8863808809167 1327.6206113823334 L 1087.2265830475833 1334.9505102990001 L 1101.8863808809167 1342.2804092156669 Z"/></g></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="805.8906875540468" y="1377.170728059" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">回复消息</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1087.2265830475833 1384.207431019 L 597.678625933125 1384.207431019" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(583.1947456737917,1384.207431019) translate(-583.1947456737917,-1384.207431019)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 597.854543507125 1376.8775321023334 L 583.1947456737917 1384.207431019 L 597.854543507125 1391.5373299356668 Z"/></g></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="606.650422207125" y="1426.427648779" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">写入 Write Loop</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 583.1947456737917 1433.4643517390002 L 653.5617752737917 1433.4643517390002 L 653.5617752737917 1456.3336363590001 L 597.678625933125 1456.3336363590001" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(583.1947456737917,1456.3336363590001) translate(-583.1947456737917,-1456.3336363590001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 597.854543507125 1449.0037374423334 L 583.1947456737917 1456.3336363590001 L 597.854543507125 1463.6635352756668 Z"/></g></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="279.86886757527475" y="1524.9414902190001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">断开或关闭连接</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 93.64678855933333 1531.978193179 L 568.7108654144583 1531.978193179" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(583.1947456737917,1531.978193179) translate(-583.1947456737917,-1531.978193179)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 568.5349478404584 1524.6482942623334 L 583.1947456737917 1531.978193179 L 568.5349478404584 1539.3080920956668 Z"/><g transform="translate(79.1629083,1531.978193179) translate(-79.1629083,-1531.978193179)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 93.82270613333333 1524.6482942623334 L 79.1629083 1531.978193179 L 93.82270613333333 1539.3080920956668 Z"/></g></g></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="682.8591628958437" y="1574.198410939" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">(ShuntMessage) OnConnectionClosedEvent</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 583.1947456737917 1581.235113899 L 1072.74270278825 1581.235113899" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(1087.2265830475833,1581.235113899) translate(-1087.2265830475833,-1581.235113899)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1072.5667852142499 1573.9052149823333 L 1087.2265830475833 1581.235113899 L 1072.5667852142499 1588.5650128156667 Z"/></g></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1110.6822595809167" y="1623.455331659" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">消息处理</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1087.2265830475833 1630.4920346190002 L 1157.5936126475833 1630.4920346190002 L 1157.5936126475833 1653.361319239 L 1101.7104633069166 1653.361319239" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(1087.2265830475833,1653.361319239) translate(-1087.2265830475833,-1653.361319239)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1101.8863808809167 1646.0314203223334 L 1087.2265830475833 1653.361319239 L 1101.8863808809167 1660.6912181556668 Z"/></g></g><g><g/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 17.591757400000006 626.0026870790001 L 644.7658965737917 626.0026870790001 L 644.7658965737917 807.1977882990002 L 17.591757400000006 807.1977882990002 L 17.591757400000006 626.0026870790001 Z" stroke-miterlimit="10" stroke-width="2.5131082" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 17.591757400000006 626.0026870790001 L 17.591757400000006 647.1127959590001 L 79.47703916777344 647.1127959590001 L 90.03209360777345 636.5577415190002 L 90.03209360777345 626.0026870790001 L 17.591757400000006 626.0026870790001" stroke-miterlimit="10" stroke-width="2.5131082" stroke-dasharray=""/><text fill="black" stroke="none" font-family="sans-serif" font-size="8.8pt" font-style="normal" font-weight="bold" text-decoration="normal" x="35.183514800000005" y="640.0760929990001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">loop</text><g><rect fill="white" stroke="none" x="104.98508739777346" y="627.4100276710002" width="80.29678381179687" height="18.295427696"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="8.8pt" font-style="normal" font-weight="bold" text-decoration="normal" x="107.62385100777345" y="640.0760929990001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">[Write Loop]</text></g><g><g/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 17.591757400000006 1076.3516765190002 L 1178.118091894198 1076.3516765190002 L 1178.118091894198 1482.7212724590001 L 17.591757400000006 1482.7212724590001 L 17.591757400000006 1076.3516765190002 Z" stroke-miterlimit="10" stroke-width="2.5131082" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 17.591757400000006 1076.3516765190002 L 17.591757400000006 1097.4617853990003 L 79.47703916777344 1097.4617853990003 L 90.03209360777345 1086.9067309590002 L 90.03209360777345 1076.3516765190002 L 17.591757400000006 1076.3516765190002" stroke-miterlimit="10" stroke-width="2.5131082" stroke-dasharray=""/><text fill="black" stroke="none" font-family="sans-serif" font-size="8.8pt" font-style="normal" font-weight="bold" text-decoration="normal" x="35.183514800000005" y="1090.4250824390003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">loop</text><g><rect fill="white" stroke="none" x="104.98508739777346" y="1077.7590171110003" width="76.82586706375" height="18.295427696"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="8.8pt" font-style="normal" font-weight="bold" text-decoration="normal" x="107.62385100777345" y="1090.4250824390003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">[Read Loop]</text></g></g><g/><g/><g/></g></svg>