08-19-2012, 09:48 PM
Добрый день!
Нужна помощь в понимании этой библиотеки.
При создании сервера указываем пайплайн:
далее в пайплайн указываются классы обрабатыаюшие как входящие(енкодер) так и исходящие(декодер) потоки байт,
а также логика обработки (хандлер):
в хандлере идет обработка и возбуждение возможных ошибок:
Т.е когда приходит поток байт от клиента, этот поток попадает в енкодер, там идет разделение его на отдельные
пакеты, и передаются это все в обработчик хандлер, хендлер вычисляет логику и передает пакет в декодер, а он
отправляет пакет клиенту. Так ?)
И если входящие данные зашифрованы, например blowfish`ем, то расшифровка происходит в енкодер\декодер или в хендлер?
Нужна помощь в понимании этой библиотеки.
При создании сервера указываем пайплайн:
Код:
ServerBootstrap bootstrap = new ServerBootstrap(
new NioServerSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool()));
bootstrap.setPipelineFactory(new FactorialServerPipelineFactory());
далее в пайплайн указываются классы обрабатыаюшие как входящие(енкодер) так и исходящие(декодер) потоки байт,
а также логика обработки (хандлер):
Код:
public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline pipeline = pipeline();
pipeline.addLast("decoder", new Decoder());
pipeline.addLast("encoder", new Encoder());
pipeline.addLast("handler", new Handler());
return pipeline;
}
в хандлере идет обработка и возбуждение возможных ошибок:
Код:
@Override
public void messageReceived(
ChannelHandlerContext ctx, MessageEvent e) {
// Send back the received message to the remote peer.
transferredBytes.addAndGet(((ChannelBuffer) e.getMessage()).readableBytes());
e.getChannel().write(e.getMessage());
}
@Override
public void exceptionCaught(
ChannelHandlerContext ctx, ExceptionEvent e) {
// Close the connection when an exception is raised.
logger.log(
Level.WARNING,
"Unexpected exception from downstream.",
e.getCause());
e.getChannel().close();
}
Т.е когда приходит поток байт от клиента, этот поток попадает в енкодер, там идет разделение его на отдельные
пакеты, и передаются это все в обработчик хандлер, хендлер вычисляет логику и передает пакет в декодер, а он
отправляет пакет клиенту. Так ?)
И если входящие данные зашифрованы, например blowfish`ем, то расшифровка происходит в енкодер\декодер или в хендлер?