1 line
30 KiB
XML
1 line
30 KiB
XML
<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> |