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

Method transmitEmbed

ZezeJava/ZezeJava/src/main/java/Zeze/Game/Online.java:1632–1680  ·  view source on GitHub ↗
(long sender, @NotNull String actionName, @NotNull Iterable<Long> roleIds,
							  @Nullable Binary parameter, boolean processNotOnline)

Source from the content-addressed store, hash-verified

1630 }
1631
1632 public void transmitEmbed(long sender, @NotNull String actionName, @NotNull Iterable<Long> roleIds,
1633 @Nullable Binary parameter, boolean processNotOnline) {
1634 if (providerApp.zeze.getConfig().getGlobalCacheManagerHostNameOrAddress().isEmpty()) {
1635 // 没有启用cache-sync,马上触发本地任务。
1636 processTransmit(sender, actionName, roleIds, parameter);
1637 return;
1638 }
1639
1640 var groups = groupByServerId(roleIds);
1641 RoleOnServer groupLocal = null;
1642 for (var it = groups.iterator(); it.moveToNext(); ) {
1643 var group = it.value();
1644 if (group.serverId == -1) {
1645 // not online
1646 if (processNotOnline)
1647 groupLocal = merge(groupLocal, group);
1648 else
1649 logger.info("transmit not online roles={}", group);
1650 continue;
1651 }
1652 if (group.serverId == providerApp.zeze.getConfig().getServerId()) {
1653 // loopback 就是当前gs.
1654 groupLocal = merge(groupLocal, group);
1655 continue;
1656 }
1657 var transmit = new Transmit();
1658 transmit.Argument.setActionName(actionName);
1659 transmit.Argument.setSender(sender);
1660 transmit.Argument.getRoles().addAll(group.roles);
1661 transmit.Argument.setOnlineSetName(multiInstanceName);
1662 if (parameter != null)
1663 transmit.Argument.setParameter(parameter);
1664 var ps = providerApp.providerDirectService.providerByServerId.get(group.serverId);
1665 if (ps == null) {
1666 assert groupLocal != null;
1667 groupLocal.roles.addAll(group.roles);
1668 continue;
1669 }
1670 var socket = providerApp.providerDirectService.GetSocket(ps.getSessionId());
1671 if (socket == null) {
1672 assert groupLocal != null;
1673 groupLocal.roles.addAll(group.roles);
1674 continue;
1675 }
1676 Transaction.whileCommit(() -> transmit.Send(socket));
1677 }
1678 if (groupLocal != null && !groupLocal.roles.isEmpty())
1679 processTransmit(sender, actionName, groupLocal.roles, parameter);
1680 }
1681
1682 public void transmit(long sender, @NotNull String actionName, @NotNull Iterable<Long> roleIds) {
1683 transmit(sender, actionName, roleIds, null);

Callers 4

transmitMethod · 0.95
scheduleOnlineMethod · 0.80
scheduleOnlineHotMethod · 0.80
cancelOnlineMethod · 0.80

Calls 15

processTransmitMethod · 0.95
groupByServerIdMethod · 0.95
mergeMethod · 0.95
whileCommitMethod · 0.95
isEmptyMethod · 0.65
moveToNextMethod · 0.65
valueMethod · 0.65
getServerIdMethod · 0.65
getMethod · 0.65
getSessionIdMethod · 0.65
getConfigMethod · 0.45

Tested by

no test coverage detected