Когда ChannelHandlerContext передается в ChannelHandler, а не в собственный контекст этого ChannelHandler? - PullRequest
0 голосов
/ 22 июня 2019

Вот (постоянная) ссылка на пример в дикой природе вопроса, о котором у меня есть вопрос, взятый из собственных примеров Нетти.Рассматриваемый пример сам по себе не важен, просто тот факт, что он показывает шаблон, который мне интересен:

https://github.com/netty/netty/blob/b26a61acd1bde5b6fca21026cd9123a38f277ad6/example/src/main/java/io/netty/example/http2/helloworld/multiplex/server/Http2ServerInitializer.java#L97-L103

Ниже я извлек его:

@Override
protected void channelRead0(ChannelHandlerContext ctx, HttpMessage msg) throws Exception {
    ChannelPipeline pipeline = ctx.pipeline();
    ChannelHandlerContext thisCtx = pipeline.context(this);
    /* ... */

Здесь у нас есть ChannelInboundAdapter, которому передается ChannelHandlerContext.Хорошо.

Первые две строки метода, которые я здесь извлек, прыгают через некоторые обручи, чтобы получить «правильный» ChannelHandlerContext, подразумевая (во всяком случае, для меня), что ChannelHandlerContext, чтоЭтот метод как-то не относится к этому ChannelHandler.

При каких обстоятельствах требуется такой прыжок с обручем?

1 Ответ

1 голос
/ 24 июня 2019

Спасибо за то, что подняли этот вопрос ... Это на самом деле "ошибка" в примере и совершенно не нужно.Просто используйте ctx:)

Предлагаемое исправление для примеров:

https://github.com/netty/netty/pull/9276

...