MCPcopy Create free account
hub / github.com/e2wugui/zeze / sendError

Method sendError

ZezeJava/ZezeJava/src/main/java/Zeze/Game/Online.java:842–883  ·  view source on GitHub ↗
(@NotNull String account, long roleId,
						  @NotNull String linkName, long linkSid)

Source from the content-addressed store, hash-verified

840 }
841
842 public long sendError(@NotNull String account, long roleId,
843 @NotNull String linkName, long linkSid) throws Exception {
844 var onlineShared = getOrAddOnlineShared(roleId);
845
846 var local = _tlocal.get(roleId);
847 if (local != null && local.getLoginVersion() != onlineShared.getLoginVersion()) { // 本机数据已经过时,马上删除。
848 var ret = removeLocalAndTrigger(roleId);
849 if (ret != 0) {
850 logger.info("sendError({}): account={}, roleId={}, linkName={}, linkSid={}, removeLocalAndTrigger={}",
851 multiInstanceName, account, roleId, linkName, linkSid, ret);
852 return ret;
853 }
854 }
855
856 // skip not owner: 仅仅检查LinkSid是不充分的。后面继续检查LoginVersion。
857 var link = onlineShared.getLink();
858 if (!link.getLinkName().equals(linkName) || link.getLinkSid() != linkSid) {
859 logger.info("sendError({}): account={}, roleId={}, linkName={}, linkSid={} != linkName={}, linkSid={}",
860 multiInstanceName, account, roleId, linkName, linkSid, link.getLinkName(), link.getLinkSid());
861 return 0;
862 }
863
864 onlineShared.setLink(new BLink(link.getLinkName(), link.getLinkSid(), eLinkBroken));
865 // local 在这个流程里面不需要setLink,如果是这个登录的,那么扇面已经删除(removeLocalAndTrigger),否则不需要修改。
866
867 var ret = linkBrokenTrigger(account, roleId);
868 // for shorter use
869 logger.info("sendError({}): account={}, roleId={}, linkName={}, linkSid={}, triggerEmbed={}",
870 multiInstanceName, account, roleId, linkName, linkSid, ret);
871
872 // see tryLogout
873 // 如果玩家在延迟期间建立了新的登录,下面版本号判断会失败。
874 if (onlineShared.getLink().getState() != eOffline && assignLogoutVersion(onlineShared)) {
875 var ret2 = logoutTrigger(roleId, LogoutReason.LOGOUT);
876 logger.info("sendError: roleId={}, state={}, logoutTrigger={}",
877 roleId, onlineShared.getLink().getState(), ret2);
878 return ret2;
879 }
880 logger.info("sendError: roleId={}, state={}, version.login/logoutVersion={}",
881 roleId, onlineShared.getLink().getState(), onlineShared.getLoginVersion());
882 return 0;
883 }
884
885 public long linkBroken(@NotNull String account, long roleId,
886 @NotNull String linkName, long linkSid) throws Exception {

Callers 3

triggerLinkBrokenMethod · 0.95
processErrorSidsMethod · 0.95
sendDirectMethod · 0.95

Calls 13

getOrAddOnlineSharedMethod · 0.95
removeLocalAndTriggerMethod · 0.95
linkBrokenTriggerMethod · 0.95
assignLogoutVersionMethod · 0.95
logoutTriggerMethod · 0.95
getMethod · 0.65
getLoginVersionMethod · 0.65
getLinkMethod · 0.65
equalsMethod · 0.65
getLinkNameMethod · 0.65
getLinkSidMethod · 0.65
getStateMethod · 0.65

Tested by

no test coverage detected