chciałbym stworzyć rurociągu koparki, takich jak:Netty - Jak przekazać informacje pomiędzy obsługą w tym samym rurociągu
public ChannelPipeline getPipeline() throws Exception
{
return Channels.pipeline(
new ObjectEncoder(),
new ObjectDecoder(),
new AuthenticationServerHandler(),
new BusinessLogicServerHandler());
}
Kluczem tutaj jest to, że chciałbym się AuthenticationServerHandler
, aby móc przejść dane logowania do BusinessLogicServerHandler
.
Rozumiem, że można użyć wartości Attachment
, jednak tylko przechowuje informacje dla tego modułu obsługi, inne moduły znajdujące się w potoku nie mogą uzyskać do niego dostępu. Zauważyłem też, że jest coś, co może zadziałać, ale nie mogę znaleźć żadnych prawdziwych informacji o tym, jak go użyć. Wszystko, co widziałem, to ludzie tworzą dla niej statyczną instancję, ale w jaki sposób odzyskujesz i uzyskujesz dostęp do informacji w innej procedurze? Zakładając, że to właściwa metoda.
Moje pytanie brzmi: w jaki sposób przekazujesz informacje pomiędzy modułami obsługi w tym samym potoku. W powyższym przykładzie w jaki sposób przekazać dane logowania od AuthenticationServerHandler
do BusinessLogicServerHandler
?
To właśnie zrozumiałem (mniej więcej w koncepcji), ale nie znalazłem żadnych przykładów gdzie dokładnie to zrobić. Nadal jestem trochę nieostry w szczegółach ... –
Nie używamy go już w Apache James Protocols, ale myślę, że możesz uzyskać ten pomysł ze starego kodu: http://svn.apache.org/viewvc /james/protocols/tags/protocols-1.5/impl/src/main/java/org/apache/james/protocols/impl/ChannelAttributeSupport.java?view=markup http://svn.apache.org/viewvc/ james/protokoły/tagi/protokoły-1.5/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelUpstreamHandler.java? view = markup –
Oto przykład dla ChannelLocal. http://stackoverflow.com/questions/8449663/usage-of-nettys-channellocal – Veebs