當前位置: 首頁>>代碼示例>>Java>>正文


Java ReferenceCountUtil類代碼示例

本文整理匯總了Java中io.netty.util.ReferenceCountUtil的典型用法代碼示例。如果您正苦於以下問題:Java ReferenceCountUtil類的具體用法?Java ReferenceCountUtil怎麽用?Java ReferenceCountUtil使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


ReferenceCountUtil類屬於io.netty.util包,在下文中一共展示了ReferenceCountUtil類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: channelRead

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
  //客戶端channel已關閉則不轉發了
  if (!clientChannel.isOpen()) {
    ReferenceCountUtil.release(msg);
    return;
  }
  HttpProxyInterceptPipeline interceptPipeline = ((HttpProxyServerHandle) clientChannel.pipeline()
      .get("serverHandle")).getInterceptPipeline();
  if (msg instanceof HttpResponse) {
    interceptPipeline.afterResponse(clientChannel, ctx.channel(), (HttpResponse) msg);
  } else if (msg instanceof HttpContent) {
    interceptPipeline.afterResponse(clientChannel, ctx.channel(), (HttpContent) msg);
  } else {
    clientChannel.writeAndFlush(msg);
  }
}
 
開發者ID:monkeyWie,項目名稱:proxyee,代碼行數:18,代碼來源:HttpProxyClientHandle.java

示例2: channelRead

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
    if (dstChannel.isActive()) {
        ByteBuf byteBuf = (ByteBuf) msg;
        try {
            if (!byteBuf.hasArray()) {
                byte[] bytes = new byte[byteBuf.readableBytes()];
                byteBuf.getBytes(0, bytes);
                if (uplink) {
                    dstChannel.writeAndFlush(Unpooled.wrappedBuffer(wrapper.wrap(bytes)));
                    log.info("\tClient ==========> Target \tSend [{} bytes]", bytes.length);
                } else {
                    bytes = wrapper.unwrap(bytes);
                    if (bytes != null) {
                        dstChannel.writeAndFlush(Unpooled.wrappedBuffer(bytes));
                        log.info("\tClient <========== Target \tGet [{} bytes]", bytes.length);
                    }
                }
            }
        } finally {
            ReferenceCountUtil.release(msg);
        }
    }
}
 
開發者ID:ZhangJiupeng,項目名稱:AgentX,代碼行數:25,代碼來源:XRelayHandler.java

示例3: channelRead

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
    if (dstChannel.isActive()) {
        ByteBuf byteBuf = (ByteBuf) msg;
        try {
            if (!byteBuf.hasArray()) {
                byte[] bytes = new byte[byteBuf.readableBytes()];
                byteBuf.getBytes(0, bytes);
                if (uplink) {
                    bytes = wrapper.unwrap(bytes);
                    if (bytes != null) {
                        dstChannel.writeAndFlush(Unpooled.wrappedBuffer(bytes));
                        log.info("\tClient ==========> Target \tSend [{} bytes]", bytes.length);
                    }
                } else {
                    dstChannel.writeAndFlush(Unpooled.wrappedBuffer(wrapper.wrap(bytes)));
                    log.info("\tClient <========== Target \tGet [{} bytes]", bytes.length);
                }
            }
        } finally {
            ReferenceCountUtil.release(msg);
        }
    }
}
 
開發者ID:ZhangJiupeng,項目名稱:AgentX,代碼行數:25,代碼來源:XRelayHandler.java

示例4: channelRead0

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
@Override
protected void channelRead0(ChannelHandlerContext ctx,
                            FullHttpRequest request) throws Exception {
    if (master.config().getProxyMode() == ProxyMode.HTTP && !tunneled) {
        if (request.method() == HttpMethod.CONNECT) {
            handleTunnelProxyConnection(ctx, request);
        } else {
            handleHttpProxyConnection(ctx, request);
        }
    } else {
        checkState(outboundChannel != null);
        LOGGER.info("[Client ({})] => [Server ({})] : {}",
                    connectionInfo.getClientAddr(), connectionInfo.getServerAddr(),
                    request);
        outboundChannel.writeAndFlush(ReferenceCountUtil.retain(request));
    }
}
 
開發者ID:chhsiao90,項目名稱:nitmproxy,代碼行數:18,代碼來源:Http1FrontendHandler.java

示例5: encode

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
private ByteBuf encode ( final ChannelHandlerContext ctx, final Object msg )
{
    ByteBuf buf = ctx.alloc ().buffer ( 255 );
    try
    {
        this.manager.encodeMessage ( msg, buf );
        if ( buf.isReadable () )
        {
            // copy away the reference so it does not get released
            final ByteBuf buf2 = buf;
            buf = null;
            return buf2;
        }
    }
    finally
    {
        ReferenceCountUtil.release ( buf );
    }
    return null;
}
 
開發者ID:eclipse,項目名稱:neoscada,代碼行數:21,代碼來源:MessageChannel.java

示例6: handleIFormat

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
private void handleIFormat ( final InformationTransfer msg, ByteBuf out )
{
    final ByteBuf data = msg.getData ();
    try
    {
        out = out.order ( ByteOrder.LITTLE_ENDIAN );

        final int len = data.readableBytes ();

        if ( len > Constants.APCI_MAX_DATA_LENGTH )
        {
            throw new EncoderException ( String.format ( "Packet too big - %s bytes", len ) );
        }

        out.ensureWritable ( 6 + len );
        out.writeByte ( Constants.START_BYTE );
        out.writeByte ( 4 + len );
        out.writeShort ( msg.getSendSequenceNumber () << 1 );
        out.writeShort ( msg.getReceiveSequenceNumber () << 1 );
        out.writeBytes ( data );
    }
    finally
    {
        ReferenceCountUtil.release ( msg.getData () );
    }
}
 
開發者ID:eclipse,項目名稱:neoscada,代碼行數:27,代碼來源:APDUEncoder.java

示例7: channelRead

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
	try {
		if (relayChannel.isActive()) {
			ByteBuf bytebuff = (ByteBuf) msg;
			if (!bytebuff.hasArray()) {
				int len = bytebuff.readableBytes();
				byte[] arr = new byte[len];
				bytebuff.getBytes(0, arr);
				connectHandler.sendRemote(arr, arr.length, relayChannel);
			}
		}
	} catch (Exception e) {
		logger.error("send data to remoteServer error",e);
	} finally {
		ReferenceCountUtil.release(msg);
	}
}
 
開發者ID:breakEval13,項目名稱:NSS,代碼行數:19,代碼來源:OutRelayHandler.java

示例8: channelRead

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
	try {
		if (relayChannel.isActive()) {
			logger.debug("get remote message" + relayChannel);
			ByteBuf bytebuff = (ByteBuf) msg;
			if (!bytebuff.hasArray()) {
				int len = bytebuff.readableBytes();
				byte[] arr = new byte[len];
				bytebuff.getBytes(0, arr);
				connectHandler.sendLocal(arr, arr.length, relayChannel);
			}
		}
	} catch (Exception e) {
		logger.error("receive remoteServer data error", e);
	} finally {
		ReferenceCountUtil.release(msg);
	}
}
 
開發者ID:breakEval13,項目名稱:NSS,代碼行數:20,代碼來源:InRelayHandler.java

示例9: dotStuff

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
private String dotStuff(String testString, int chunkSize) throws Exception {
  ByteArrayInputStream stream = new ByteArrayInputStream(testString.getBytes(StandardCharsets.UTF_8));
  DotStuffingChunkedStream chunkedStream = new DotStuffingChunkedStream(stream, chunkSize);

  CompositeByteBuf destBuffer = ALLOCATOR.compositeBuffer();

  while (!chunkedStream.isEndOfInput()) {
    destBuffer.addComponent(true, chunkedStream.readChunk(ALLOCATOR));
  }

  byte[] bytes = new byte[destBuffer.readableBytes()];
  destBuffer.getBytes(0, bytes);

  ReferenceCountUtil.release(destBuffer);
  return new String(bytes, CharsetUtil.UTF_8);
}
 
開發者ID:HubSpot,項目名稱:NioSmtpClient,代碼行數:17,代碼來源:DotStuffingChunkedStreamTest.java

示例10: channelRead

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    try {

        if (!(msg instanceof AbstractMessage)) {
            Log.warn(SERIAL, "Invalid message received! Message skipped.");
            return;
        }

        Log.debug(SERIAL, "Message received: " + msg);

        // Notify that a message was received.
        onMessageReceived((AbstractMessage) msg);

    } finally {
        ReferenceCountUtil.release(msg);
    }
}
 
開發者ID:tbressler,項目名稱:waterrower-core,代碼行數:19,代碼來源:RxtxSerialHandler.java

示例11: beforeRequest

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
@Override
public void beforeRequest(Channel clientChannel, HttpContent httpContent,
    HttpProxyInterceptPipeline pipeline) throws Exception {
  if (content != null) {
    ByteBuf temp = httpContent.content().slice();
    content.writeBytes(temp);
    if (httpContent instanceof LastHttpContent) {
      try {
        byte[] contentBts = new byte[content.readableBytes()];
        content.readBytes(contentBts);
        ((HttpRequestInfo) pipeline.getHttpRequest()).setContent(contentBts);
      } finally {
        ReferenceCountUtil.release(content);
        content = null; //狀態回歸
      }
    }
  }
  pipeline.beforeRequest(clientChannel, httpContent);
}
 
開發者ID:monkeyWie,項目名稱:proxyee-down,代碼行數:20,代碼來源:HttpDownSniffIntercept.java

示例12: channelRead

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    Message message = (Message) msg;
    try {
        if (Constants.COMMAND_REGISTER.equals(message.getCommand())) {
            Application.Connections.put(message.getContent(), ctx.channel());
            logger.debug("token " + message.getContent() + " ==> remote address " + ctx.channel().remoteAddress());
        } else if (!Application.clientIsOnline(ctx.channel())) {
            ctx.writeAndFlush(Constants.CONTENT_BYE);
            ctx.close();
        } else {
            if (Constants.COMMAND_PULSE.equals(message.getCommand())) {
            } else {
                ctx.writeAndFlush(Constants.CONTENT_BYE);
                ctx.close();
            }
        }
    } finally {
        ReferenceCountUtil.release(msg);
    }
}
 
開發者ID:yuercl,項目名稱:QuantBridge,代碼行數:22,代碼來源:MessageServerHandler.java

示例13: failPendingBatchMessages

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
/**
 * fail any pending batch messages that were enqueued, however batch was not closed out
 *
 */
private void failPendingBatchMessages(PulsarClientException ex) {
    if (batchMessageContainer.isEmpty()) {
        return;
    }
    int numMessagesInBatch = batchMessageContainer.numMessagesInBatch;
    semaphore.release(numMessagesInBatch);
    try {
        // Need to protect ourselves from any exception being thrown in the future handler from the application
        batchMessageContainer.firstCallback.sendComplete(ex);
    } catch (Throwable t) {
        log.warn("[{}] [{}] Got exception while completing the callback for msg {}:", topic, producerName,
                batchMessageContainer.sequenceId, t);
    }
    ReferenceCountUtil.safeRelease(batchMessageContainer.getBatchedSingleMessageMetadataAndPayload());
    batchMessageContainer.clear();
}
 
開發者ID:apache,項目名稱:incubator-pulsar,代碼行數:21,代碼來源:ProducerImpl.java

示例14: serializeResponseAsBinary

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
@Override
public ByteBuf serializeResponseAsBinary(final ResponseMessage responseMessage, final ByteBufAllocator allocator) throws SerializationException {
    ByteBuf encodedMessage = null;
    try {
        final byte[] payload = mapper.writeValueAsBytes(responseMessage);
        encodedMessage = allocator.buffer(payload.length);
        encodedMessage.writeBytes(payload);

        return encodedMessage;
    } catch (Exception ex) {
        if (encodedMessage != null) ReferenceCountUtil.release(encodedMessage);

        logger.warn("Response [{}] could not be serialized by {}.", responseMessage.toString(), AbstractGraphSONMessageSerializerV1d0.class.getName());
        throw new SerializationException(ex);
    }
}
 
開發者ID:PKUSilvester,項目名稱:LiteGraph,代碼行數:17,代碼來源:AbstractGraphSONMessageSerializerV1d0.java

示例15: serializeRequestAsBinary

import io.netty.util.ReferenceCountUtil; //導入依賴的package包/類
@Override
public ByteBuf serializeRequestAsBinary(final RequestMessage requestMessage, final ByteBufAllocator allocator) throws SerializationException {
    ByteBuf encodedMessage = null;
    try {
        final byte[] header = obtainHeader();
        final byte[] payload = mapper.writeValueAsBytes(requestMessage);

        encodedMessage = allocator.buffer(header.length + payload.length);
        encodedMessage.writeBytes(header);
        encodedMessage.writeBytes(payload);

        return encodedMessage;
    } catch (Exception ex) {
        if (encodedMessage != null) ReferenceCountUtil.release(encodedMessage);

        logger.warn("Request [{}] could not be serialized by {}.", requestMessage.toString(), AbstractGraphSONMessageSerializerV1d0.class.getName());
        throw new SerializationException(ex);
    }
}
 
開發者ID:PKUSilvester,項目名稱:LiteGraph,代碼行數:20,代碼來源:AbstractGraphSONMessageSerializerV1d0.java


注:本文中的io.netty.util.ReferenceCountUtil類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。