passing data between ChannelHandlers
Norman Maurer
norman.maurer at googlemail.com
Mon Oct 24 01:57:18 EDT 2011
Hi Matt,
comments inline..
2011/10/24 Matt DeLuco <list_usr at spacebox.net>:
> I found what I was looking for - a brief example of ChannelLocal is found in
> the ChannelHandler documentation (ps: it might be worth repeating in the
> ChannelLocal docs..) But now I'm wondering:
> The example shows a DataServerState class - where would that class be
> instantiated such that all handlers have access to it? I thought I might
> instantiate it in my server startup code, pass it to the
> ChannelPipelineFactory where I could pass it on to the constructor of each
> ChannelHandler. Is there another way?
I think thats the easiest way and should work very well.
> Also, at some point before the Channel closes would I have to be sure to
> remove any ChannelLocal variable references? That is, ChannelLocals map
> values to Channels, so would I have to be sure to remove each reference so
> values to closed Channels don't pile up, creating a memory leak? If so,
> how/where could I attach an event handler to a Channel to do this? Would I
> have to do this in a ChannelHandler (I don't like that idea, because which
> ChannelHandler do I put it in?) or create some kind of custom
> ChannelFactory?
Just add an SimpleUpstreamChannelHandler and override the
channelClosed(..) method. There you can remove it.
I think it would also be nice to allow the ChannelLocal to cleanup it
self by register and ChannelListener to it that takes care of the
remove and so prevent the leak. I will open a jira issue for it and
implement it.
> Thanks.
> MD
>
> On Fri, Oct 21, 2011 at 3:36 AM, Norman Maurer
> <norman.maurer at googlemail.com> wrote:
>>
>> I was using it before in a project but remoted it in favor of
>> ChannelHandlerContext.setAttachment(..).
>>
>> But it worked quited fine for me. You can see the old code here:
>>
>>
>> http://svn.apache.org/viewvc/james/protocols/tags/protocols-1.5/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelUpstreamHandler.java?view=markup
>>
>> Bye,
>> Norman
>>
>> Ps: What does not work for you ?
>>
>> 2011/10/21 Matt DeLuco <list_usr at spacebox.net>:
>> > Where can I find some examples of ChannelLocal in use?
>> > I'm not getting the results I expect, but I don't think I'm using it
>> > correctly either.
>> > MD
>> >
>> > On Sun, Oct 16, 2011 at 7:14 AM, Norman Maurer
>> > <norman.maurer at googlemail.com> wrote:
>> >>
>> >> You can set anything you want as attachment. But it's only visible in
>> >> the same handler....
>> >>
>> >> If you want to share stuff between handler you should checkout
>> >> ChannelLocal
>> >>
>> >> Bye
>> >> Norman
>> >> 2011/10/16, Matt DeLuco <list_usr at spacebox.net>:
>> >> > Before composing this message I had noticed
>> >> > ChannelHandlerContext.setAttachment(Object) and getAttachment(). But
>> >> > for some reason I came to the conclusion that it wasn't intended for
>> >> > what I want to do.
>> >> >
>> >> > I came to that conclusion in part because I found it strange that
>> >> > it's
>> >> > only possible to set one attachment, rather than being able to attach
>> >> > a set (or map) of objects. Could I just attach a map to the context
>> >> > and store whatever I want in that map, to pass objects between
>> >> > ChannelHandlers?
>> >> >
>> >> > MD
>> >> >
>> >> >
>> >> > On Sat, Oct 15, 2011 at 9:42 PM, Matt DeLuco <list_usr at spacebox.net>
>> >> > wrote:
>> >> >> Is it possible to pass data between ChannelHandlers, or store data
>> >> >> somewhere that the handlers in a specific pipeline/channel can
>> >> >> access
>> >> >> throughout the lifetime of the request?
>> >> >>
>> >> >> For example, I have my own class for dealing with http cookies,
>> >> >> "CookieMap". I'd like to have a SimpleChannelHandler that creates a
>> >> >> CookieMap to be used by handlers further upstream, and then sets the
>> >> >> cookies in the CookieMap on the response on their way back
>> >> >> downstream.
>> >> >>
>> >> >> MD
>> >> >>
>> >> >
>> >> > _______________________________________________
>> >> > netty-users mailing list
>> >> > netty-users at lists.jboss.org
>> >> > https://lists.jboss.org/mailman/listinfo/netty-users
>> >> >
>> >> _______________________________________________
>> >> netty-users mailing list
>> >> netty-users at lists.jboss.org
>> >> https://lists.jboss.org/mailman/listinfo/netty-users
>> >
>> >
Bye,
Norman
More information about the netty-users
mailing list