doc[net]: 更新注释文档

This commit is contained in:
jaysunxiao
2021-11-18 18:32:56 +08:00
parent 034f8bd55b
commit 84cdbe3a09
4 changed files with 27 additions and 25 deletions
@@ -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控制同步或异步的附加包,keypacketId
* 用来保存同步或异步请求的SignalAttachment附加包,keysignalId
*/
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() {