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


Java ChannelHandlerContext類代碼示例

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


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

示例1: encode

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
@Override
protected void encode(ChannelHandlerContext ctx, ConnectionResponse msg, ByteBuf out) throws Exception {
	ChannelPipeline pipeline = ctx.pipeline();

	switch (msg.getType()) {
	case HANDSHAKE_CONNECTION:
		pipeline.addAfter("decoder", "handshake.encoder", new HandshakeEncoder());
		pipeline.replace("decoder", "handshake.decoder", new HandshakeDecoder());
		break;
	case LOGIN_CONNECTION:
		out.writeByte(ClientMessage.SUCCESSFUL_CONNECTION.getId());
		pipeline.addAfter("decoder", "login.encoder", new LoginEncoder());
		pipeline.replace("decoder", "login.decoder", new LoginDecoder());
		break;
	}

	pipeline.remove(this);
}
 
開發者ID:jordanabrahambaws,項目名稱:Quavo,代碼行數:19,代碼來源:ConnectionEncoder.java

示例2: handlePacket

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
/**
 * Synchronized by {@code synchronized (this)} in {@link #channelRead0}
 */
private void handlePacket(ChannelHandlerContext ctx, byte[] data) {
    try {
        temp = Utils.arrayAppend(temp, data);
        while (temp.length != 0) {
            int position = Utils.arraySearch(temp, Protocol.SIGNATURE);
            if (position < 0) {
                return;//收到的是子包, 數據未結尾
            }

            byte[] d = Utils.arrayGetCenter(temp, 0, position);
            temp = Utils.arrayDelete(temp, position + Protocol.SIGNATURE.length);

         JPREMain.getInstance().getScheduler().addTask(() -> processPacket(ctx, d));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
 
開發者ID:Him188,項目名稱:JPRE,代碼行數:22,代碼來源:NetworkPacketHandler.java

示例3: createFlushOperation

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
private Runnable createFlushOperation(ChannelHandlerContext ctx, long cmdHandle) {
/* todo  we must drain all NBD_CMD_WRITE and NBD_WRITE_TRIM from the queue
 * before processing NBD_CMD_FLUSH
 */
    return () -> {
        int err = 0;
        try {
            unflushedBytes.set(0);
            exportProvider.flush();
        } catch (Exception e) {
            LOGGER.error("error during flush", e);
            err = Protocol.EIO_ERROR;
        } finally {
            sendTransmissionSimpleReply(ctx, err, cmdHandle, null);
        }
    };
}
 
開發者ID:MineboxOS,項目名稱:tools,代碼行數:18,代碼來源:TransmissionPhase.java

示例4: decode

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
@Override
protected void decode(ChannelHandlerContext ctx, WebSocketFrame frame, List<Object> out) throws Exception {
    ByteBuf buf = frame.content().order(ByteOrder.LITTLE_ENDIAN);
    if (buf.capacity() < 1) {
        // Discard empty messages
        return;
    }

    buf.resetReaderIndex();
    int packetId = buf.readUnsignedByte();
    Packet packet = reg.SERVERBOUND.constructPacket(packetId);

    if (packet == null) {
        throw new UnknownPacketException("Unknown packet ID: " + packetId);
    }

    Server.log.finest("Received packet ID " + packetId + " (" + packet.getClass().getSimpleName() + ") from " + ctx.channel().remoteAddress());

    packet.readData(buf);
    out.add(packet);
}
 
開發者ID:AlexMog,項目名稱:SurvivalMMO,代碼行數:22,代碼來源:PacketDecoder.java

示例5: handle

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
@Override
public void handle(ChannelHandlerContext ctx, AmqpConnectionHandler connectionHandler) {
    // TODO handle exclusive param
    AmqpChannel channel = connectionHandler.getChannel(getChannel());

    ctx.fireChannelRead((BlockingTask) () -> {
        try {
            channel.declareQueue(queue, passive, durable, autoDelete);
            ctx.writeAndFlush(new QueueDeclareOk(getChannel(), queue, 0, 0));
        } catch (BrokerException e) {
            LOGGER.warn("Error declaring queue.", e);
            ctx.writeAndFlush(new ChannelClose(getChannel(),
                                               ChannelException.NOT_ALLOWED,
                                               ShortString.parseString(e.getMessage()),
                                               CLASS_ID,
                                               METHOD_ID));
        }
    });
}
 
開發者ID:wso2,項目名稱:message-broker,代碼行數:20,代碼來源:QueueDeclare.java

示例6: createRemotingServer

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
public static RemotingServer createRemotingServer() throws InterruptedException {
    NettyServerConfig config = new NettyServerConfig();
    RemotingServer remotingServer = new NettyRemotingServer(config);
    remotingServer.registerProcessor(0, new NettyRequestProcessor() {
        @Override
        public RemotingCommand processRequest(ChannelHandlerContext ctx, RemotingCommand request) {
            request.setRemark("Hi " + ctx.channel().remoteAddress());
            return request;
        }

        @Override
        public boolean rejectRequest() {
            return false;
        }
    }, Executors.newCachedThreadPool());

    remotingServer.start();

    return remotingServer;
}
 
開發者ID:lirenzuo,項目名稱:rocketmq-rocketmq-all-4.1.0-incubating,代碼行數:21,代碼來源:RemotingServerTest.java

示例7: decodeMessage

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
private Message decodeMessage(ChannelHandlerContext ctx, List<Frame> frames) throws IOException {
    long frameType = frames.get(0).getType();

    byte[] payload = new byte[frames.size() == 1 ? frames.get(0).getSize() : frames.get(0).totalFrameSize];
    int pos = 0;
    for (Frame frame : frames) {
        pos += ByteStreams.read(frame.getStream(), payload, pos, frame.getSize());
    }

    if (loggerWire.isDebugEnabled()) {
        loggerWire.debug("Recv: Encoded: {} [{}]", frameType, Hex.toHexString(payload));
    }

    Message msg = createMessage((byte) frameType, payload);

    if (loggerNet.isInfoEnabled()) {
        loggerNet.info("From: \t{} \tRecv: \t{}", channel, msg.toString());
    }

    ethereumListener.onRecvMessage(channel, msg);

    channel.getNodeStatistics().rlpxInMessages.add();
    return msg;
}
 
開發者ID:rsksmart,項目名稱:rskj,代碼行數:25,代碼來源:MessageCodec.java

示例8: processRequest

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
@Override
public RemotingCommand processRequest(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException {
    SendMessageContext mqtraceContext;
    switch (request.getCode()) {
        case RequestCode.CONSUMER_SEND_MSG_BACK:
            return this.consumerSendMsgBack(ctx, request);
        default:
            SendMessageRequestHeader requestHeader = parseRequestHeader(request);
            if (requestHeader == null) {
                return null;
            }

            //默認情況下,mqtraceContext = null;
            mqtraceContext = buildMsgContext(ctx, requestHeader);
            this.executeSendMessageHookBefore(ctx, request, mqtraceContext);
            final RemotingCommand response = this.sendMessage(ctx, request, mqtraceContext, requestHeader);

            this.executeSendMessageHookAfter(response, mqtraceContext);
            return response;
    }
}
 
開發者ID:lyy4j,項目名稱:rmq4note,代碼行數:22,代碼來源:SendMessageProcessor.java

示例9: decodeConnectionRequest

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
@Test
@Tag("fast")
public void decodeConnectionRequest() throws Exception {
    ChannelHandlerContext ctx = new MockChannelHandlerContext();
    ByteBuf buf = Unpooled.buffer();
    ArrayList<Object> out = new ArrayList<>();

    buf.writeByte(0x6); // header length
    buf.writeByte(TpduCode.CONNECTION_REQUEST.getCode());
    buf.writeShort(0x01); // destination reference
    buf.writeShort(0x02); // source reference
    buf.writeByte(ProtocolClass.CLASS_0.getCode());
    IsoOnTcpMessage in = new IsoOnTcpMessage(buf);

    isoTPProtocol.decode(ctx, in, out);

    assertTrue(out.size() == 1, "Message not decoded");

    ConnectionRequestTpdu requestTpdu = (ConnectionRequestTpdu) ((IsoTPMessage)out.get(0)).getTpdu();

    assertTrue(requestTpdu.getTpduCode() == TpduCode.CONNECTION_REQUEST, "Message code not correct");
    assertTrue(requestTpdu.getDestinationReference() == (short) 0x1, "Message destination reference not correct");
    assertTrue(requestTpdu.getSourceReference() == (short) 0x2, "Message source reference not correct");
    assertTrue(requestTpdu.getProtocolClass() == ProtocolClass.CLASS_0, "Message protocol class reference not correct");
    assertTrue(requestTpdu.getParameters().isEmpty(), "Message contains paramaters");
}
 
開發者ID:apache,項目名稱:incubator-plc4x,代碼行數:27,代碼來源:IsoTPProtocolTest.java

示例10: userEventTriggered

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {

    // read idle event.
    if (evt == IdleStateEvent.FIRST_READER_IDLE_STATE_EVENT
            || evt == IdleStateEvent.READER_IDLE_STATE_EVENT) {

        if (null != operation) {
            throw new FastdfsReadTimeoutException(
                    String.format(
                            "execute %s read timeout.",
                            operation
                    )
            );
        }

        return;
    }

    // all idle event.
    if (evt == IdleStateEvent.FIRST_ALL_IDLE_STATE_EVENT
            || evt == IdleStateEvent.ALL_IDLE_STATE_EVENT) {
        throw new FastdfsTimeoutException("fastdfs channel was idle timeout.");
    }
}
 
開發者ID:rodbate,項目名稱:fastdfs-spring-boot,代碼行數:26,代碼來源:FastdfsHandler.java

示例11: write

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
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);
}
 
開發者ID:timtomtim7,項目名稱:ChatMenuAPI,代碼行數:21,代碼來源:PlayerChatIntercept.java

示例12: processRequest

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
@Override
public RemotingCommand processRequest(ChannelHandlerContext ctx, RemotingCommand request)
        throws RemotingCommandException {
    switch (request.getCode()) {
    case RequestCode.HEART_BEAT:
        return this.heartBeat(ctx, request);
    case RequestCode.UNREGISTER_CLIENT:
        return this.unregisterClient(ctx, request);
    case RequestCode.GET_CONSUMER_LIST_BY_GROUP:
        return this.getConsumerListByGroup(ctx, request);
    case RequestCode.UPDATE_CONSUMER_OFFSET:
        return this.updateConsumerOffset(ctx, request);
    case RequestCode.QUERY_CONSUMER_OFFSET:
        return this.queryConsumerOffset(ctx, request);
    default:
        break;  
    }
    return null;
}
 
開發者ID:y123456yz,項目名稱:reading-and-annotate-rocketmq-3.4.6,代碼行數:20,代碼來源:ClientManageProcessor.java

示例13: encode

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
protected void encode(ChannelHandlerContext channelHandlerContext, Object o, ByteBuf byteBuf) throws Exception {
    if(clazz.isInstance(o)){
        Kryo kryo = null;
        try{
        	kryo = pool.borrow();
        	ByteArrayOutputStream baos = new ByteArrayOutputStream();  
            Output output = new Output(baos);  
            kryo.writeObject(output, o);  
            output.flush();  
            output.close();  
           
            byte[] data = baos.toByteArray(); 
            byteBuf.writeInt(data.length);
            byteBuf.writeBytes(data);
            baos.close();
        }catch(Exception e){
        	LOG.warn("MessageEncoder happen exception.", e);
        }finally{
        	if(kryo != null){
        		 pool.release(kryo);
        	}
        }
        
    }

}
 
開發者ID:islittlechen,項目名稱:lionrpc,代碼行數:27,代碼來源:MessageEncoder.java

示例14: onPubComp

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
protected void onPubComp(ChannelHandlerContext ctx, MqttMessage msg) {
    if (!this.connected) {
        logger.debug("Protocol violation: Client {} must first sent a CONNECT message, now received PUBCOMP message, disconnect the client", this.clientId);
        ctx.close();
        return;
    }

    logger.debug("Message received: Received PUBCOMP message from client {} user {}", this.clientId, this.userName);

    MqttPacketIdVariableHeader variable = (MqttPacketIdVariableHeader) msg.variableHeader();
    int packetId = variable.packetId();

    // In the QoS 2 delivery protocol, the Sender
    // MUST treat the PUBREL packet as “unacknowledged” until it has received the corresponding
    // PUBCOMP packet from the receiver.
    logger.trace("Remove in-flight: Remove in-flight PUBREL message {} for client {}", packetId, this.clientId);
    this.redis.removeInFlightMessage(this.clientId, packetId);
}
 
開發者ID:12315jack,項目名稱:j1st-mqtt,代碼行數:19,代碼來源:SyncRedisHandler.java

示例15: handlerAdded

import io.netty.channel.ChannelHandlerContext; //導入依賴的package包/類
@Override
public void handlerAdded(ChannelHandlerContext ctx) throws Exception {
    LOGGER.info("{} : handlerAdded", connectionInfo);

    Http2Connection connection = new DefaultHttp2Connection(false);
    ChannelHandler http2ConnHandler = new HttpToHttp2ConnectionHandlerBuilder()
            .frameListener(new DelegatingDecompressorFrameListener(
                    connection,
                    new InboundHttp2ToHttpAdapterBuilder(connection)
                            .maxContentLength(master.config().getMaxContentLength())
                            .propagateSettings(true)
                            .build()))
            .frameLogger(new Http2FrameLogger(LogLevel.DEBUG))
            .connection(connection)
            .build();
    ctx.pipeline()
       .addBefore(ctx.name(), null, http2ConnHandler)
       .addBefore(ctx.name(), null, new Http2Handler());
}
 
開發者ID:chhsiao90,項目名稱:nitmproxy,代碼行數:20,代碼來源:Http2BackendHandler.java


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