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

Method mergeRank

ZezeJava/ZezeJava/src/main/java/Zeze/Game/Rank.java:440–471  ·  view source on GitHub ↗

直接合并hash分组,不适用缓存。 @param keyHintFrom from @param keyHintTo to

(BConcurrentKey keyHintFrom, BConcurrentKey keyHintTo)

Source from the content-addressed store, hash-verified

438 * @param keyHintTo to
439 */
440 public void mergeRank(BConcurrentKey keyHintFrom, BConcurrentKey keyHintTo) {
441 if (keyHintFrom.getRankType() != keyHintTo.getRankType()
442 || keyHintFrom.getTimeType() != keyHintTo.getTimeType()
443 || keyHintFrom.getYear() != keyHintTo.getYear())
444 throw new RuntimeException("rank type mismatch.");
445
446 if (keyHintFrom.getOffset() == keyHintTo.getOffset())// same hint
447 return;
448
449 int concurrentLevel = getConcurrentLevel(keyHintFrom.getRankType());
450 int countNeed = getComputeCount(keyHintFrom.getRankType());
451 for (int i = 0; i < concurrentLevel; ++i) {
452 var concurrentKeyFrom = new BConcurrentKey(keyHintFrom.getRankType(), i, keyHintFrom.getTimeType(),
453 keyHintFrom.getYear(), keyHintFrom.getOffset());
454 var concurrentKeyTo = new BConcurrentKey(keyHintTo.getRankType(), i, keyHintTo.getTimeType(),
455 keyHintTo.getYear(), keyHintTo.getOffset());
456 var from = _trank.getOrAdd(concurrentKeyFrom);
457 // 把from里面的所有玩家从目标列表中清除。
458 for (var j = 0; j < from.getRankList().size(); ++j)
459 _removeRank(i, keyHintTo, from.getRankList().get(j).getRoleId(), null);
460 // 合并到目标列表中。
461 var merged = merge(_trank.getOrAdd(concurrentKeyTo), from);
462 // 删除多余的数量。
463 if (merged.getRankList().size() > countNeed) { // 再次删除多余的结果。
464 //noinspection ListRemoveInLoop
465 for (int ir = merged.getRankList().size() - 1; ir >= countNeed; --ir)
466 merged.getRankList().remove(ir);
467 }
468 // 保存列表。
469 _trank.put(concurrentKeyTo, merged);
470 }
471 }
472
473 /**
474 * 直接查询数据库并合并分组数据。直接查询没有使用缓存。

Callers

nothing calls this directly

Calls 15

getConcurrentLevelMethod · 0.95
getComputeCountMethod · 0.95
_removeRankMethod · 0.95
mergeMethod · 0.95
getRankTypeMethod · 0.80
getTimeTypeMethod · 0.80
getYearMethod · 0.80
getRankListMethod · 0.80
getOffsetMethod · 0.65
sizeMethod · 0.65
getRoleIdMethod · 0.65
getMethod · 0.65

Tested by

no test coverage detected