您确定要退出登录吗?
修改密码
t-io集群服务器是基于t-io写的一个TCP服务器,该服务器会维护连接上来的TCP客户端
基于t-io集群服务器,开发人员可以更轻松地开发出有集群能力的应用以及RPC、MSG等垂直工具
在谭聊的测试机上,已经连续运行近3979小时(约165天),各项性能指标非常稳定(见下图)
package org.tio.clu.server.handler;
/**
* 透传请求
* @author tanyaowu
*/
@CommandHandler(Command.TransferReq)
public class TransferReqHandler extends AbsCluServerHandler {
private static Logger log = LoggerFactory.getLogger(TransferReqHandler.class);
public TransferReqHandler() {
}
@Override
public void myHandler(CluPacket cluPacket, ServerChannelContext serverChannelContext) throws Exception {
TransferReq transferReq = Clu.getBodyObj(cluPacket, TransferReq.class);
byte tt = transferReq.getBt();
BindType bindType = BindType.from(tt);
String v = transferReq.getV();
String[] vs = transferReq.getVs();
CollectionWithLock<? extends Collection<String>, String> setWithLock = null;
if (bindType == BindType.All || bindType == BindType.ChannelId) {
setWithLock = Nodes.BS_NODE_CGIDS;
} else {
log.warn("收到透传请求{} : {}", bindType, v);
setWithLock = getSetWithLock(Nodes.getXxx_Cids(bindType), v, vs);
}
TransferNtf transferNtf = TransferNtf.fromReq(transferReq);
transfer(cluPacket, serverChannelContext, setWithLock, transferNtf);
}
/**
* @param mapSetWithLock
* @param v
* @param vs
* @return
* @author tanyaowu
*/
private SetWithLock<String> getSetWithLock(MapSetWithLock<String, String> mapSetWithLock, String v, String[] vs) {
SetWithLock<String> setWithLock = null;
if (StrUtil.isNotBlank(v)) {
setWithLock = mapSetWithLock.get(v);
}
if (ArrayUtil.isNotEmpty(vs)) {
SetWithLock<String> temSetWithLock = new SetWithLock<String>(new HashSet<String>());
for (String v1 : vs) {
if (StrUtil.isNotBlank(v1)) {
SetWithLock<String> setWithLock1 = mapSetWithLock.get(v1);
setWithLock1.handle(new ReadLockHandler<Set<String>>() {
@Override
public void handler(Set<String> set) {
temSetWithLock.getObj().addAll(set);
}
});
}
}
setWithLock = temSetWithLock;
}
return setWithLock;
}
}
确定要删除该条评论吗?
重置 发表评论