mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-06-06 22:13:20 +00:00
doc[net]: 更新注释文档
This commit is contained in:
@@ -76,7 +76,7 @@ public class Router implements IRouter {
|
||||
return;
|
||||
}
|
||||
|
||||
// 发送者(客户端)同步和异步消息的接收,发送者通过packetId判断重复
|
||||
// 发送者(客户端)同步和异步消息的接收,发送者通过signalId判断重复
|
||||
if (attachment != null) {
|
||||
switch (attachment.packetType()) {
|
||||
case SIGNAL_PACKET:
|
||||
|
||||
@@ -34,36 +34,40 @@ public class SignalBridge {
|
||||
// equal with 32767
|
||||
private static final int SIGNAL_MASK = 0B00000000_00000000_01111111_11111111;
|
||||
|
||||
/**
|
||||
* 用来保存同步或异步请求的SignalAttachment附加包,signalId和SIGNAL_MASK取与的结果hash作为数组索引,使用AtomicReferenceArray只是为了提升性能
|
||||
*/
|
||||
private static final AtomicReferenceArray<SignalAttachment> signalAttachmentArray = new AtomicReferenceArray<>(SIGNAL_MASK + 1);
|
||||
|
||||
/**
|
||||
* Session控制同步或异步的附加包,key:packetId
|
||||
* 用来保存同步或异步请求的SignalAttachment附加包,key:signalId
|
||||
*/
|
||||
private static final Map<Integer, SignalAttachment> signalAttachmentMap = new ConcurrentHashMap<>(1000);
|
||||
|
||||
public static void addSignalAttachment(SignalAttachment signalAttachment) {
|
||||
var packetId = signalAttachment.getSignalId();
|
||||
var hash = packetId & SIGNAL_MASK;
|
||||
var signalId = signalAttachment.getSignalId();
|
||||
var hash = signalId & SIGNAL_MASK;
|
||||
|
||||
// 使用AtomicReferenceArray只是为了提升性能,仅使用ConcurrentHashMap依然可以运行
|
||||
if (signalAttachmentArray.compareAndSet(hash, null, signalAttachment)) {
|
||||
return;
|
||||
}
|
||||
|
||||
signalAttachmentMap.put(packetId, signalAttachment);
|
||||
signalAttachmentMap.put(signalId, signalAttachment);
|
||||
}
|
||||
|
||||
public static SignalAttachment removeSignalAttachment(SignalAttachment signalAttachment) {
|
||||
return removeSignalAttachment(signalAttachment.getSignalId());
|
||||
}
|
||||
|
||||
public static SignalAttachment removeSignalAttachment(int packetId) {
|
||||
var hash = packetId & SIGNAL_MASK;
|
||||
public static SignalAttachment removeSignalAttachment(int signalId) {
|
||||
var hash = signalId & SIGNAL_MASK;
|
||||
|
||||
var attachment = signalAttachmentArray.get(hash);
|
||||
if (attachment != null && attachment.getSignalId() == packetId && signalAttachmentArray.compareAndSet(hash, attachment, null)) {
|
||||
if (attachment != null && attachment.getSignalId() == signalId && signalAttachmentArray.compareAndSet(hash, attachment, null)) {
|
||||
return attachment;
|
||||
}
|
||||
return signalAttachmentMap.remove(packetId);
|
||||
return signalAttachmentMap.remove(signalId);
|
||||
}
|
||||
|
||||
public static void status() {
|
||||
|
||||
@@ -36,30 +36,28 @@ public class PacketSignalArray {
|
||||
private static final AtomicReferenceArray<Integer> signalPacketArray = new AtomicReferenceArray<>(SIGNAL_MASK + 1);
|
||||
|
||||
/**
|
||||
* Session控制同步或异步的附加包,key:packetId
|
||||
* Session控制同步或异步的附加包,key:signalId
|
||||
*/
|
||||
private static final Map<Integer, Integer> signalAttachmentMap = new ConcurrentHashMap<>(1000);
|
||||
|
||||
public static void addSignalAttachment(int packetId) {
|
||||
var hash = packetId & SIGNAL_MASK;
|
||||
public static void addSignalAttachment(int signalId) {
|
||||
var hash = signalId & SIGNAL_MASK;
|
||||
|
||||
if (signalPacketArray.compareAndSet(hash, null, packetId)) {
|
||||
if (signalPacketArray.compareAndSet(hash, null, signalId)) {
|
||||
return;
|
||||
}
|
||||
// logger.info("add [packetId:{}] [oldPacketId:{}]", packetId, signalPacketArray.get(hash));
|
||||
signalAttachmentMap.put(packetId, packetId);
|
||||
signalAttachmentMap.put(signalId, signalId);
|
||||
}
|
||||
|
||||
|
||||
public static void removeSignalAttachment(int packetId) {
|
||||
var hash = packetId & SIGNAL_MASK;
|
||||
var oldPacketId = signalPacketArray.get(hash);
|
||||
public static void removeSignalAttachment(int signalId) {
|
||||
var hash = signalId & SIGNAL_MASK;
|
||||
var oldSignalId = signalPacketArray.get(hash);
|
||||
|
||||
if (oldPacketId != null && oldPacketId == packetId && signalPacketArray.compareAndSet(hash, oldPacketId, null)) {
|
||||
if (oldSignalId != null && oldSignalId == signalId && signalPacketArray.compareAndSet(hash, oldSignalId, null)) {
|
||||
return;
|
||||
}
|
||||
// logger.info("remove [packetId:{}] [oldPacketId:{}]", packetId, oldPacketId);
|
||||
signalAttachmentMap.remove(packetId);
|
||||
signalAttachmentMap.remove(signalId);
|
||||
}
|
||||
|
||||
public static void status() {
|
||||
|
||||
@@ -31,13 +31,13 @@ public class PacketSignalMap {
|
||||
|
||||
private static final Map<Integer, Integer> signalAttachmentMap = new ConcurrentHashMap<>(1_0000);
|
||||
|
||||
public static void addSignalAttachment(int packetId) {
|
||||
signalAttachmentMap.put(packetId, packetId);
|
||||
public static void addSignalAttachment(int signalId) {
|
||||
signalAttachmentMap.put(signalId, signalId);
|
||||
}
|
||||
|
||||
|
||||
public static void removeSignalAttachment(int packetId) {
|
||||
signalAttachmentMap.remove(packetId);
|
||||
public static void removeSignalAttachment(int signalId) {
|
||||
signalAttachmentMap.remove(signalId);
|
||||
}
|
||||
|
||||
public static void status() {
|
||||
|
||||
Reference in New Issue
Block a user