On Sat, 2008-06-21 at 02:40 +0200, Quintin Beukes wrote:
> Hey,
> 
> Hopefully someone is still around to answer this question.
> 
> I had a look at the NIO of HttpCore (module-nio). Specifically the examples.
> 
> I noticed the client connections are done in a separate thread. Does it have
> to happen in a separate thread? Do I need a thread for every "persistent"
> connection?

Quintin,

You only need 2 threads: one for the I/O reactor and a controller thread
to control the I/O reactor. All new connections are established on the
I/O reactor thread.

> 
> I assume not. I haven't had a proper look, as I'm going to bed myself now. I
> just want to confirm something.
> 
> I create the new connection by adding an object of my choice to the context
> and then connecting it to an IO reactor. Here can be any number of
> connections to any number of different hosts, and I just handle each one by
> using it's attachment in the event handlers?
> 

Yes.

> So it's basically just set up, and everything then happens via events which
> is executed in a single dedicated thread for ALL connections to ALL hosts?
> 

Yes.

Oleg

> Q
> 
> On 6/21/08, Oleg Kalnichevski <[EMAIL PROTECTED]> wrote:
> >
> > Quintin Beukes wrote:
> >
> >> Will NIO connections work?
> >>
> >>
> > Yep. NIO is event driven, so the I/O selector will trigger an event if a
> > channel gets closed by the other side
> >
> > Oleg
> >
> > PS: I'm off to bed. Wife is angry.
> >
> > On 6/21/08, Quintin Beukes <[EMAIL PROTECTED]> wrote:
> >>
> >>> Hey,
> >>>
> >>> So.. keepalive is sort of useless then? Because I realised what my
> >>> problem
> >>> is. It wasn't synchronization. It was because connections closed by the
> >>> server, and then it fails when I try to re-use the connection.
> >>>
> >>> Basically what I have is this:
> >>> I try once, if receiving a NoResponse exception, I remove it from the
> >>> pool
> >>> and try again
> >>> If second try fails as well, it gets removed and I try again but with an
> >>> isStale() check first.
> >>>
> >>> My problem is that these keep failing until I filtered through all
> >>> connections in the pool. In which case I start making new ones.
> >>>
> >>> How does HttpClient handle this? Or what can I do to improve this into
> >>> being more reliable (in the sense of reducing failures to a minimum).
> >>>
> >>> Q
> >>>
> >>> On 6/21/08, Oleg Kalnichevski <[EMAIL PROTECTED]> wrote:
> >>>
> >>>> Quintin Beukes wrote:
> >>>>
> >>>> Hey,
> >>>>>
> >>>>> Isn't isStale() supposed to be able to tell me whether the server is
> >>>>> accepting responses?
> >>>>>
> >>>>>
> >>>>> No, it is intended to test if the connection is still valid on the
> >>>> client
> >>>> side. Blocking I/O provides no good means of telling if the socket has
> >>>> been
> >>>> closed by the peer. #isStale is a work-around for the problem.
> >>>>
> >>>> Oleg
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>> For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>
> >>>>
> >>>>
> >>> --
> >>> Quintin Beukes
> >>>
> >>
> >>
> >>
> >>
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to