2012-02-22 2 views
0

Я использую Нетти принять поток строк данных в этом формате ...Как добавить несколько декодеров рамок на основе разделителей в netty ...............?

   string1#st2|st3|st4..|....| 

я получаю несколько блоков такого рода строк, которые отделены друг от друга \ п и я хочу первый разделить эти куски, а затем конкретные строки ...

Моя проблема заключается в том, что если я использую ограничителем кадров на основе декодера с \ п в качестве разделителя, можно разделить строки без problem..But как можно я разделяю остальную часть строки, не используя строковый токениз er .... Есть ли способ добавить несколько растровых декодеров на основе разделителей? Потому что я хочу сначала обработать информацию в строке1, а затем на основе этой остальной строки. Если я напишу декодер для разделения строки1, тогда не будет никакого способа отделить остальную часть строки, не используя символику строки ...

Thanx ...

Редактировать

есть ли способ сохранить объект в канале .. как в сервлет объекты контекст .......

ответ

0

Вы должен быть в состоянии сделать это, просто добавив два (или больше, если вам нужно) экземпляров DelimiterBasedFrameDecoder к вашей ChannelPipeline. Просто поставьте тот, который делает seperate '\ n' первым, и после этого добавьте другое. Это должно просто сработать.

+0

Да, я сделал это, и это worked..but дело в том, что я хочу, чтобы держать string1, а затем выполнить декодирование остальных ... Проблема что вскоре после того, как я поместил обработчик для выполнения логики для string1, невозможно поместить другой разделитель DelimiterBasedFrameDecoder для декодирования остальной строки String ... – Pradeep

+0

Извините, у меня нет проблем. Можете ли вы попытаться объяснить бит более подробно? –

+0

Что я хочу знать, так это то, как положить DelimiterBasedFrameDecoder после другого декодера, который возвращает String ...? – Pradeep

0

В netty 5 вы можете напрямую настроить настроенные атрибуты на канал, как контекст в сервлете.

С атрибутами Channel вы всегда можете обработать остальную строку после сохранения подстрочных подстрок, возможно, форматированного результата, через конвейер декодеров.

Здесь можно ссылаться образец: Using channel attributes in different context handlers