Class AbstractFutureManager
java.lang.Object
org.misaka.api.common.network.future.AbstractFutureManager
- Direct Known Subclasses:
FutureManagerClient,FutureManagerServer
发送端发送一个 FutureRequestPacket 后由各端的 FutureManager 的 IPacketListener 处理喵
发送端 S, 目标端 R, 目标端 IPacketListener H
****Send
1. S ------> R
*****************Send
****Consume
2. R -----------> H ------> S
发送端 S, 目标端 R, 目标端 IPacketListener H
****Send
1. S ------> R
*****************Send
****Consume
2. R -----------> H ------> S
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static final record -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final longprotected final Map<Integer, AbstractFutureManager.PendingFutureInfo> protected final Map<Integer, IFutureHandlerInvoker> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclear()protected <T_RESP extends ResponsePacket<?,T_RESP>>
intcreatePendingFuture(PacketType<?, T_RESP> responsePacketType, Consumer<T_RESP> callback, long timeoutMillis) protected voidexecuteCallback(int futureId, ResponsePacket<?, ?> responsePacket) protected intprotected <REQ_L extends net.minecraft.network.PacketListener,RES_L extends net.minecraft.network.PacketListener, RES_P extends ResponsePacket<RES_L, RES_P>, REQ_P extends RequestPacket<REQ_L, REQ_P, RES_L, RES_P>>
voidhandleRequest(FutureRequestPacket<REQ_L> futureRequestPacket, REQ_L packetListener, Consumer<RES_P> responseSender) 处理 FutureRequestPacket 喵
Request 发送过来后, 由带有 HandleFuture 注解的方法处理并返回 ResponsePacket 喵, 随后后将 Response 发送回去喵protected <L extends net.minecraft.network.PacketListener,F_P extends FuturePacket<L, F_P>, RES_P extends ResponsePacket<L, RES_P>>
voidhandleResponse(F_P responsePacket, Consumer<RES_P> callbackExecutor) final voidregisterFutureHandler(Class<?> targetClass) final voidregisterFutureHandler(Object targetInstance)
-
Field Details
-
pendingFutures
-
requestHandlers
-
DEFAULT_TIMEOUT_MS
protected static final long DEFAULT_TIMEOUT_MS- See Also:
-
-
Constructor Details
-
AbstractFutureManager
protected AbstractFutureManager()
-
-
Method Details
-
clear
public void clear() -
generateFutureId
protected int generateFutureId() -
createPendingFuture
protected <T_RESP extends ResponsePacket<?,T_RESP>> int createPendingFuture(PacketType<?, T_RESP> responsePacketType, Consumer<T_RESP> callback, long timeoutMillis) -
registerFutureHandler
-
registerFutureHandler
-
handleRequest
protected <REQ_L extends net.minecraft.network.PacketListener,RES_L extends net.minecraft.network.PacketListener, void handleRequestRES_P extends ResponsePacket<RES_L, RES_P>, REQ_P extends RequestPacket<REQ_L, REQ_P, RES_L, RES_P>> (FutureRequestPacket<REQ_L> futureRequestPacket, REQ_L packetListener, Consumer<RES_P> responseSender) 处理 FutureRequestPacket 喵
Request 发送过来后, 由带有 HandleFuture 注解的方法处理并返回 ResponsePacket 喵, 随后后将 Response 发送回去喵- Type Parameters:
REQ_L- 当前端的 PacketListener 的泛型喵RES_L- 目标端的 PacketListener 喵, 只是泛型占位而已喵, 没有使用喵RES_P- RequestPacket 期望的 ResponsePacket 的泛型喵, responsePacket 的类型喵REQ_P- RequestPacket 的泛型喵, instance 的类型喵- Parameters:
futureRequestPacket- 各端 FutureManager 传来的实例喵packetListener- 当前端的 PacketListener 喵responseSender- 用于当前端发送 ResponsePacket 喵
-
handleResponse
protected <L extends net.minecraft.network.PacketListener,F_P extends FuturePacket<L, void handleResponseF_P>, RES_P extends ResponsePacket<L, RES_P>> (F_P responsePacket, Consumer<RES_P> callbackExecutor) -
executeCallback
-