java类io.netty.channel.ChannelPromise的实例源码

ServerTest.java 文件源码 项目:simulacron 阅读 37 收藏 0 点赞 0 评论 0
@Override
public void bind(ChannelHandlerContext ctx, SocketAddress localAddress, ChannelPromise promise)
    throws Exception {
  if (localAddress == slowAddr) {
    // delay binding 1 second.
    eventLoop.schedule(
        () -> {
          try {
            super.bind(ctx, localAddress, promise);
          } catch (Exception e) {
            // shouldn't happen.
          }
        },
        1,
        TimeUnit.SECONDS);
  } else {
    super.bind(ctx, localAddress, promise);
  }
}
Http2FrontendHandler.java 文件源码 项目:nitmproxy 阅读 37 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    LOGGER.info("[Client ({})] <= [Server ({})] : {}",
                connectionInfo.getClientAddr(), connectionInfo.getServerAddr(),
                msg);

    if (msg instanceof HttpResponse) {
        HttpResponse response = (HttpResponse) msg;
        if (!response.headers().contains(HttpConversionUtil.ExtensionHeaderNames.STREAM_ID.text())) {
            if (streams.isEmpty()) {
                throw new IllegalStateException("No active streams");
            }
            response.headers().add(HttpConversionUtil.ExtensionHeaderNames.STREAM_ID.text(),
                                   streams.poll());
        }
    }

    ctx.write(msg, promise);
}
TestAsyncIPC.java 文件源码 项目:ditb 阅读 34 收藏 0 点赞 0 评论 0
@Override
protected AsyncRpcClient createRpcClientRTEDuringConnectionSetup(Configuration conf) {
  setConf(conf);
  return new AsyncRpcClient(conf, new ChannelInitializer<SocketChannel>() {
        @Override
        protected void initChannel(SocketChannel ch) throws Exception {
          ch.pipeline().addFirst(new ChannelOutboundHandlerAdapter() {
            @Override
            public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise)
                throws Exception {
              promise.setFailure(new RuntimeException("Injected fault"));
            }
          });
        }
      });
}
FrameProcessor.java 文件源码 项目:neoscada 阅读 30 收藏 0 点赞 0 评论 0
@Override
public void write ( final ChannelHandlerContext ctx, final Object msg, final ChannelPromise promise ) throws Exception
{
    if ( msg instanceof OpenResponse )
    {
        writeOpenResponse ( ctx, (OpenResponse)msg, promise );
    }
    else if ( msg instanceof SyslogResponse )
    {
        writeGenericResponse ( ctx, (AbstractGenericResponse)msg, promise );
    }
    else if ( msg instanceof ServerCloseMessage )
    {
        ctx.write ( new Frame ( 0, "serverclose", (ByteBuf)null ) );
    }
    else
    {
        super.write ( ctx, msg, promise );
    }
}
FrameProcessor.java 文件源码 项目:neoscada 阅读 54 收藏 0 点赞 0 评论 0
protected void writeOpenResponse ( final ChannelHandlerContext ctx, final OpenResponse msg, final ChannelPromise promise )
{
    final StringBuilder sb = new StringBuilder ();

    int i = 0;
    for ( final Map.Entry<String, String> entry : msg.getOffers ().entrySet () )
    {
        if ( i > 0 )
        {
            sb.append ( Constants.LF_STRING );
        }

        sb.append ( entry.getKey () );

        if ( entry.getValue () != null )
        {
            sb.append ( '=' );
            sb.append ( entry.getValue () );
        }
        i++;
    }

    ctx.write ( createCommonResponse ( msg.getTransactionId (), msg.getCode (), msg.getMessage (), sb ) );
}
FrameCodec.java 文件源码 项目:neoscada 阅读 41 收藏 0 点赞 0 评论 0
protected void processFrame ( final ChannelHandlerContext ctx, final Frame frame, final ChannelPromise promise )
{
    final int length = frame.getData () == null ? 0 : frame.getData ().readableBytes ();

    final ByteBuf data = ctx.alloc ().buffer ();
    data.writeBytes ( String.format ( "%s", frame.getTransactionId () ).getBytes ( TXNR_CHARSET ) );
    data.writeByte ( Constants.SP );
    data.writeBytes ( frame.getCommand ().getBytes ( COMMAND_CHARSET ) );
    data.writeByte ( Constants.SP );
    data.writeBytes ( String.format ( "%s", length ).getBytes ( LENGTH_CHARSET ) );

    if ( length > 0 )
    {
        data.writeByte ( Constants.SP );
        data.writeBytes ( frame.getData () );
    }

    if ( frame.getData () != null )
    {
        frame.getData ().release ();
    }

    data.writeByte ( Constants.LF );

    ctx.write ( data );
}
MessageChannel.java 文件源码 项目:neoscada 阅读 76 收藏 0 点赞 0 评论 0
private void handleMessageWrite ( final ChannelHandlerContext ctx, final Object msg, final ChannelPromise promise )
{
    final ByteBuf data = encode ( ctx, msg );

    if ( data == null )
    {
        // ignore
        return;
    }

    // if the buffer is full
    if ( this.ackBuffer.isFull () )
    {
        logger.trace ( "Store message for later transmission" );
        // ... store now and re-try later
        this.messageBuffer.add ( new WriteEvent ( ctx, data, promise ) );
    }
    else
    {
        writeMessageToChannel ( ctx, data, promise );
    }
}
MessageChannel.java 文件源码 项目:neoscada 阅读 35 收藏 0 点赞 0 评论 0
private void writeMessageToChannel ( final ChannelHandlerContext ctx, final ByteBuf data, final ChannelPromise promise )
{
    final int seq = this.ackBuffer.addMessage ( data );

    if ( promise == null )
    {
        ctx.write ( new InformationTransfer ( seq, this.receiveCounter, data ) );
    }
    else
    {
        ctx.write ( new InformationTransfer ( seq, this.receiveCounter, data ), promise );
    }

    logger.trace ( "Enqueued message as {} : {}", seq, data );

    // we can stop timer #2 here ... will be restarted by receive
    this.timer2.stop ();
}
NetworkProtocolCodec.java 文件源码 项目:hekate 阅读 31 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    if (msg instanceof DeferredMessage) {
        DeferredMessage defMsg = (DeferredMessage)msg;

        if (defMsg.isPreEncoded()) {
            // Write pre-encoded message.
            ctx.write(defMsg.encoded(), promise);
        } else {
            super.write(ctx, defMsg.encoded(), promise);
        }
    } else if (msg instanceof ByteBuf) {
        ctx.write(msg, promise);
    } else {
        super.write(ctx, msg, promise);
    }
}
KyOutBoundHandler.java 文件源码 项目:ClusterDeviceControlPlatform 阅读 29 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    IMessage message = (IMessage) msg;
    if (message.getMsgId() >= 0x40 && message.getMsgId() <= 0x4F) {
        ctx.writeAndFlush(Unpooled.wrappedBuffer(tcpMsgBuilder.buildResponseMsg((BaseTcpResponseMsg) message)));
    } else if (message.getMsgId() >= 0x60 && message.getMsgId() <= 0x6F) {
        ctx.writeAndFlush(Unpooled.wrappedBuffer(tcpMsgBuilder.buildResponseMsg((BaseTcpResponseMsg) message)));
    } else if (message.getMsgId() >= -128 && message.getMsgId() <= -113) {
        ctx.writeAndFlush(Unpooled.wrappedBuffer(tcpMsgBuilder.buildResponseMsg((BaseTcpResponseMsg) message)));
    } else if (message.getMsgId() == MsgType.INITIALIZE_DEVICE_RESPONSE_CARD) {
        ctx.writeAndFlush(Unpooled.wrappedBuffer(tcpMsgBuilder.buildInitConfirmCardNumber((TcpMsgInitResponseCardNumber) message)));
    }
    if (message.getMsgId() == 0x00) {
        ctx.writeAndFlush(Unpooled.wrappedBuffer(tcpMsgBuilder.buildResponseMsg((BaseTcpResponseMsg) message)));
    }
    if (sendListener != null) {
        sendListener.send();
    }
}
MsgRecognitionOutBoundHandler.java 文件源码 项目:ClusterDeviceControlPlatform 阅读 39 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    SendableMsgContainer message = (SendableMsgContainer) msg;
    ByteBuf byteBuf = ctx.alloc().buffer();
    FrameMajorHeader header = message.getFrameHeader();
    byteBuf.writeByte(FrameSetting.MAJOR_FRAME_HEAD_1);
    byteBuf.writeByte(FrameSetting.MAJOR_FRAME_HEAD_2);
    byteBuf.writeByte(header.getGroupId());
    byteBuf.writeByte(header.getMsgId());
    byteBuf.writeByte(header.getDeviceId());
    byteBuf.writeByte(header.getBackupMsg());
    byteBuf.writeShort(header.getDataLength());

    List<ByteBuf> dataList = message.getDataList();
    dataList.forEach(byteBuf::writeBytes);
    ctx.writeAndFlush(byteBuf);
}
PacketCodec.java 文件源码 项目:UnknownPandaServer 阅读 50 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    if (!(msg instanceof Packet)) {
        throw new RuntimeException("Object is not a *Packet");
    }

    Packet packet = (Packet) msg;
    int packetId = packet.getPacketInfo().id();
    int packetSize = packet.getPacketSize() + ProtocolSizer.ofVarInt(packetId);
    int bufferSize = packetSize + ProtocolSizer.ofVarInt(packetSize);

    ByteBuf unpooledByteBuf = Unpooled.buffer(bufferSize);
    PacketSerializer serializer = new PacketSerializer(unpooledByteBuf);

    UnknownPandaServer.getLogger().info("Sending packet: " + packet.getClass().getSimpleName() + " & id: 0x" + Integer.toHexString(packetId) + " & size: " + packetSize);
    serializer.writeVarInt(packetSize);
    serializer.writeVarInt(packetId);
    packet.send(serializer);

    ctx.writeAndFlush(serializer, promise);
}
PlayerChatIntercept.java 文件源码 项目:ChatMenuAPI 阅读 31 收藏 0 点赞 0 评论 0
public void write(ChannelHandlerContext context, Object packet, ChannelPromise promise) throws Exception
{
    BaseComponent[] components = interceptor.getComponents(packet);
    if(components != null)
    {
        boolean allowed = isAllowed(components);
        boolean paused = isPaused();
        if(!paused || !allowed)
        {
            while(messageQueue.size() > 20)
                messageQueue.remove();
            messageQueue.add(components);
        }

        if(paused && !allowed)
            return;
    }

    super.write(context, packet, promise);
}
NetworkDispatcher.java 文件源码 项目:CustomWorldGen 阅读 37 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception
{
    if (msg instanceof FMLProxyPacket)
    {
        if (side == Side.CLIENT)
        {
            //Client to server large packets are not supported to prevent client being bad.
            ctx.write(((FMLProxyPacket) msg).toC17Packet(), promise);
        }
        else
        {
            List<Packet<INetHandlerPlayClient>> parts = ((FMLProxyPacket)msg).toS3FPackets();
            for (Packet<INetHandlerPlayClient> pkt : parts)
            {
                ctx.write(pkt, promise);
            }
        }
    }
    else
    {
        ctx.write(msg, promise);
    }
}
NettyRemotingClient.java 文件源码 项目:rmq4note 阅读 34 收藏 0 点赞 0 评论 0
@Override
public void disconnect(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception {
    final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel());
    log.info("NETTY CLIENT PIPELINE: DISCONNECT {}", remoteAddress);
    closeChannel(ctx.channel());
    super.disconnect(ctx, promise);

    if (NettyRemotingClient.this.channelEventListener != null) {
        NettyRemotingClient.this.putNettyEvent(new NettyEvent(NettyEventType.CLOSE, remoteAddress.toString(), ctx.channel()));
    }
}
TinyProtocol.java 文件源码 项目:ZentrelaRPG 阅读 40 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    try {
        msg = onPacketOutAsync(player, ctx.channel(), msg);
    } catch (Exception e) {
        plugin.getLogger().log(Level.SEVERE, "Error in onPacketOutAsync().", e);
    }

    if (msg != null) {
        super.write(ctx, msg, promise);
    }
}
NettyRemotingClient.java 文件源码 项目:wechat-mall 阅读 37 收藏 0 点赞 0 评论 0
@Override
public void connect(ChannelHandlerContext ctx, SocketAddress remoteAddress,
        SocketAddress localAddress, ChannelPromise promise) throws Exception {
    final String local = localAddress == null ? "UNKNOW" : localAddress.toString();
    final String remote = remoteAddress == null ? "UNKNOW" : remoteAddress.toString();
    log.info("NETTY CLIENT PIPELINE: CONNECT  {} => {}", local, remote);
    super.connect(ctx, remoteAddress, localAddress, promise);
}
NettyRemotingClient.java 文件源码 项目:wechat-mall 阅读 33 收藏 0 点赞 0 评论 0
@Override
public void disconnect(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception {
    final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel());
    log.info("NETTY CLIENT PIPELINE: DISCONNECT {}", remoteAddress);
    closeChannel(ctx.channel());
    super.disconnect(ctx, promise);
}
CommandEncoder.java 文件源码 项目:JRediClients 阅读 36 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    if (acceptOutboundMessage(msg)) {
        if (!promise.setUncancellable()) {
            return;
        }
    }

    try {
        super.write(ctx, msg, promise);
    } catch (Exception e) {
        promise.tryFailure(e);
        throw e;
    }
}
CommandsQueue.java 文件源码 项目:JRediClients 阅读 30 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    if (msg instanceof QueueCommand) {
        QueueCommand data = (QueueCommand) msg;
        QueueCommandHolder holder = queue.peek();
        if (holder != null && holder.getCommand() == data) {
            super.write(ctx, msg, promise);
        } else {
            queue.add(new QueueCommandHolder(data, promise));
            sendData(ctx.channel());
        }
    } else {
        super.write(ctx, msg, promise);
    }
}
CommandBatchEncoder.java 文件源码 项目:JRediClients 阅读 22 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    if (acceptOutboundMessage(msg)) {
        if (!promise.setUncancellable()) {
            return;
        }
    }

    super.write(ctx, msg, promise);
}
Http1BackendHandler.java 文件源码 项目:nitmproxy 阅读 45 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    if (msg instanceof FullHttpRequest) {
        LOGGER.info("[Client ({})] => [Server ({})] : (PENDING) {}",
                    connectionInfo.getClientAddr(), connectionInfo.getServerAddr(),
                    msg);
        HttpRequest request = (HttpRequest) msg;
        pendings.offer(new RequestPromise(request, promise));
        next();
    } else if (msg instanceof HttpObject) {
        throw new IllegalStateException("Cannot handled message: " + msg.getClass());
    } else {
        ctx.write(msg, promise);
    }
}
TlsHandler.java 文件源码 项目:nitmproxy 阅读 40 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    synchronized (pendings) {
        pendings.add(msg);
    }
    if (ctx.isRemoved()) {
        flushPendings(ctx);
        ctx.flush();
    }
}
Http2BackendHandler.java 文件源码 项目:nitmproxy 阅读 39 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    LOGGER.info("[Client ({})] => [Server ({})] : {}",
                connectionInfo.getClientAddr(), connectionInfo.getServerAddr(),
                msg);
    if (msg instanceof FullHttpRequest) {
        HttpMessage httpMessage = (HttpRequest) msg;
        httpMessage.headers().add(ExtensionHeaderNames.SCHEME.text(), "https");
    } else if (msg instanceof HttpObject) {
        throw new IllegalStateException("Cannot handle message: " + msg.getClass());
    }

    ctx.writeAndFlush(msg, promise);
}
Netty4MessageChannelHandler.java 文件源码 项目:elasticsearch_my 阅读 28 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    if (msg instanceof ByteBuf && transportServiceAdapter != null) {
        // record the number of bytes send on the channel
        promise.addListener(f -> transportServiceAdapter.addBytesSent(((ByteBuf) msg).readableBytes()));
    }
    ctx.write(msg, promise);
}
NetworkDispatcher.java 文件源码 项目:CustomWorldGen 阅读 35 收藏 0 点赞 0 评论 0
@Override
public void disconnect(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception
{
    if (side == Side.CLIENT)
    {
        MinecraftForge.EVENT_BUS.post(new FMLNetworkEvent.ClientDisconnectionFromServerEvent(manager));
    }
    else
    {
        MinecraftForge.EVENT_BUS.post(new FMLNetworkEvent.ServerDisconnectionFromClientEvent(manager));
    }
    cleanAttributes(ctx);
    ctx.disconnect(promise);
}
WireTrafficStats.java 文件源码 项目:talchain 阅读 47 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    outPackets.incrementAndGet();
    if (msg instanceof ByteBuf) {
        outSize.addAndGet(((ByteBuf) msg).readableBytes());
    } else if (msg instanceof DatagramPacket) {
        outSize.addAndGet(((DatagramPacket) msg).content().readableBytes());
    }
    super.write(ctx, msg, promise);
}
ThriftClientHandler.java 文件源码 项目:drift 阅读 35 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object message, ChannelPromise promise)
        throws Exception
{
    if (message instanceof ThriftRequest) {
        ThriftRequest thriftRequest = (ThriftRequest) message;
        sendMessage(ctx, thriftRequest, promise);
    }
    else {
        ctx.write(message, promise);
    }
}
ThriftClientHandler.java 文件源码 项目:drift 阅读 39 收藏 0 点赞 0 评论 0
private void sendMessage(ChannelHandlerContext context, ThriftRequest thriftRequest, ChannelPromise promise)
        throws Exception
{
    // todo ONEWAY_SEQUENCE_ID is a header protocol thing... make sure this works with framed and unframed
    int sequenceId = thriftRequest.isOneway() ? ONEWAY_SEQUENCE_ID : this.sequenceId.incrementAndGet();
    RequestHandler requestHandler = new RequestHandler(thriftRequest, sequenceId);

    // register timeout
    requestHandler.registerRequestTimeout(context.executor());

    // write request
    ByteBuf requestBuffer = requestHandler.encodeRequest(context.alloc());

    // register request if we are expecting a response
    if (!thriftRequest.isOneway()) {
        if (pendingRequests.putIfAbsent(sequenceId, requestHandler) != null) {
            requestHandler.onChannelError(new TTransportException("Another request with the same sequenceId is already in progress"));
        }
    }

    try {
        ChannelFuture sendFuture = context.write(requestBuffer, promise);
        sendFuture.addListener(future -> messageSent(context, sendFuture, requestHandler));
    }
    catch (Throwable t) {
        onError(context, t);
    }
}
TinyProtocol.java 文件源码 项目:SamaGamesAPI 阅读 43 收藏 0 点赞 0 评论 0
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
    try {
        msg = onPacketOutAsync(player, ctx.channel(), msg);
    } catch (Exception e) {
        plugin.getLogger().log(Level.SEVERE, "Error in onPacketOutAsync().", e);
    }

    if (msg != null) {
        super.write(ctx, msg, promise);
    }
}


问题


面经


文章

微信
公众号

扫码关注公众号