Class AbstractFutureManager

java.lang.Object
org.misaka.api.common.network.future.AbstractFutureManager
Direct Known Subclasses:
FutureManagerClient, FutureManagerServer

public abstract class AbstractFutureManager extends Object
发送端发送一个 FutureRequestPacket 后由各端的 FutureManager 的 IPacketListener 处理喵
发送端 S, 目标端 R, 目标端 IPacketListener H
****Send
1. S ------> R
*****************Send
****Consume
2. R -----------> H ------> S
  • Field Details

  • 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

      public final void registerFutureHandler(Class<?> targetClass)
    • registerFutureHandler

      public final void registerFutureHandler(Object targetInstance)
    • handleRequest

      protected <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>> void handleRequest(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, F_P>, RES_P extends ResponsePacket<L, RES_P>> void handleResponse(F_P responsePacket, Consumer<RES_P> callbackExecutor)
    • executeCallback

      protected void executeCallback(int futureId, ResponsePacket<?,?> responsePacket)