NetworkEventCodec.java 文件源码

java
阅读 18 收藏 0 点赞 0 评论 0

项目:OpenModsLib 作者:
@Override
protected void encode(ChannelHandlerContext ctx, NetworkEvent msg, List<Object> out) throws IOException {
    final Channel channel = ctx.channel();
    final Side side = channel.attr(NetworkRegistry.CHANNEL_SOURCE).get();

    final NetworkEventEntry entry = CommonRegistryCallbacks.getObjectToEntryMap(registry).get(msg.getClass());
    Preconditions.checkState(entry != null, "Can't find registration for class %s", msg.getClass());
    final int id = CommonRegistryCallbacks.getEntryIdMap(registry).get(entry);

    final EventDirection validator = entry.getDirection();
    Preconditions.checkState(validator != null && validator.validateSend(side),
            "Invalid direction: sending packet %s on side %s", msg.getClass(), side);

    final PacketBuffer buf = new PacketBuffer(Unpooled.buffer());
    buf.writeVarInt(id);
    msg.writeToStream(buf);

    final FMLProxyPacket packet = new FMLProxyPacket(buf, NetworkEventDispatcher.CHANNEL_NAME);
    packet.setDispatcher(msg.dispatcher);
    out.add(packet);
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号