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

Method procedureOffline

ZezeJava/ZezeJava/src/main/java/Zeze/Game/Online.java:361–405  ·  view source on GitHub ↗
(Long roleId, @NotNull BLocal local, boolean serverStart)

Source from the content-addressed store, hash-verified

359 }
360
361 private long procedureOffline(Long roleId, @NotNull BLocal local, boolean serverStart) throws Exception {
362 var onlineShared = getOrAddOnlineShared(roleId);
363 var account = onlineShared.getAccount();
364
365 // 本机数据已经过时,马上删除。
366 if (local.getLoginVersion() != onlineShared.getLoginVersion()) {
367 var ret = removeLocalAndTrigger(roleId, serverStart);
368 if (ret != 0) {
369 logger.info("processOffline({}): account={}, roleId={}, removeLocalAndTrigger={}",
370 multiInstanceName, account, roleId, ret);
371 return ret;
372 }
373 }
374
375 // skip not owner: 仅仅检查LinkSid是不充分的。后面继续检查LoginVersion。
376 var link = onlineShared.getLink();
377 // local 里面的Link的State没有意义。
378 var linkName = local.getLink().getLinkName();
379 var linkSid = local.getLink().getLinkSid();
380 if (!link.getLinkName().equals(linkName) || link.getLinkSid() != linkSid) {
381 logger.info("processOffline({}): account={}, roleId={}, linkName={}, linkSid={} != linkName={}, linkSid={}",
382 multiInstanceName, account, roleId, linkName, linkSid, link.getLinkName(), link.getLinkSid());
383 return 0;
384 }
385
386 onlineShared.setLink(new BLink(link.getLinkName(), link.getLinkSid(), eLinkBroken));
387 // local 在这个流程里面不需要setLink,如果是这个登录的,那么扇面已经删除(removeLocalAndTrigger),否则不需要修改。
388
389 var ret = linkBrokenTrigger(account, roleId);
390 // for shorter use
391 logger.info("processOffline({}): account={}, roleId={}, linkName={}, linkSid={}, triggerEmbed={}",
392 multiInstanceName, account, roleId, linkName, linkSid, ret);
393
394 // see tryLogout
395 // 如果玩家在延迟期间建立了新的登录,下面版本号判断会失败。
396 if (onlineShared.getLink().getState() != eOffline && assignLogoutVersion(onlineShared)) {
397 var ret2 = logoutTrigger(roleId, LogoutReason.LOGOUT);
398 logger.info("processOffline: roleId={}, state={}, logoutTrigger={}",
399 roleId, onlineShared.getLink().getState(), ret2);
400 return ret2;
401 }
402 logger.info("processOffline: roleId={}, state={}, version.login/logoutVersion={}",
403 roleId, onlineShared.getLink().getState(), onlineShared.getLoginVersion());
404 return 0;
405 }
406
407 /**
408 * 启动过程自动调用。

Callers 1

processOfflineMethod · 0.95

Calls 13

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

Tested by

no test coverage detected