MessageSignatureCache.java
net.minecraft.network.chat.MessageSignatureCache
信息
- 全限定名:net.minecraft.network.chat.MessageSignatureCache
- 类型:public class
- 包:net.minecraft.network.chat
- 源码路径:src/main/java/net/minecraft/network/chat/MessageSignatureCache.java
- 起始行号:L10
- 职责:
TODO
字段/常量
-
NOT_FOUND- 类型:
int - 修饰符:
public static final - 源码定位:
L11 - 说明:
TODO
- 类型:
-
DEFAULT_CAPACITY- 类型:
int - 修饰符:
private static final - 源码定位:
L12 - 说明:
TODO
- 类型:
-
entries- 类型:
MessageSignature[] - 修饰符:
private final - 源码定位:
L13 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public MessageSignatureCache(int capacity) @ L15
- 构造器名:MessageSignatureCache
- 源码定位:L15
- 修饰符:public
参数:
- capacity: int
说明:
TODO
方法
下面的方法块按源码顺序生成。
public static MessageSignatureCache createDefault() @ L19
- 方法名:createDefault
- 源码定位:L19
- 返回类型:MessageSignatureCache
- 修饰符:public static
参数:
- 无
说明:
TODO
public int pack(MessageSignature signature) @ L23
- 方法名:pack
- 源码定位:L23
- 返回类型:int
- 修饰符:public
参数:
- signature: MessageSignature
说明:
TODO
public MessageSignature unpack(int id) @ L33
- 方法名:unpack
- 源码定位:L33
- 返回类型:MessageSignature
- 修饰符:public
参数:
- id: int
说明:
TODO
public void push(SignedMessageBody body, MessageSignature signature) @ L37
- 方法名:push
- 源码定位:L37
- 返回类型:void
- 修饰符:public
参数:
- body: SignedMessageBody
- signature: MessageSignature
说明:
TODO
void push(List<MessageSignature> entries) @ L48
- 方法名:push
- 源码定位:L48
- 返回类型:void
- 修饰符:package-private
参数:
- entries: List
说明:
TODO
private void push(ArrayDeque<MessageSignature> queue) @ L53
- 方法名:push
- 源码定位:L53
- 返回类型:void
- 修饰符:private
参数:
- queue: ArrayDeque
说明:
TODO
代码
public class MessageSignatureCache {
public static final int NOT_FOUND = -1;
private static final int DEFAULT_CAPACITY = 128;
private final @Nullable MessageSignature[] entries;
public MessageSignatureCache(int capacity) {
this.entries = new MessageSignature[capacity];
}
public static MessageSignatureCache createDefault() {
return new MessageSignatureCache(128);
}
public int pack(MessageSignature signature) {
for (int i = 0; i < this.entries.length; i++) {
if (signature.equals(this.entries[i])) {
return i;
}
}
return -1;
}
public @Nullable MessageSignature unpack(int id) {
return this.entries[id];
}
public void push(SignedMessageBody body, @Nullable MessageSignature signature) {
List<MessageSignature> lastSeen = body.lastSeen().entries();
ArrayDeque<MessageSignature> queue = new ArrayDeque<>(lastSeen.size() + 1);
queue.addAll(lastSeen);
if (signature != null) {
queue.add(signature);
}
this.push(queue);
}
@VisibleForTesting
void push(List<MessageSignature> entries) {
this.push(new ArrayDeque<>(entries));
}
private void push(ArrayDeque<MessageSignature> queue) {
Set<MessageSignature> newEntries = new ObjectOpenHashSet<>(queue);
for (int i = 0; !queue.isEmpty() && i < this.entries.length; i++) {
MessageSignature entry = this.entries[i];
this.entries[i] = queue.removeLast();
if (entry != null && !newEntries.contains(entry)) {
queue.addFirst(entry);
}
}
}
}引用的其他类
-
- 引用位置:
参数/字段/返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置: