Welcome! Log In Create A New Profile

Advanced

Re: How can a content handler block on certain events before sending a response?

Maxim Dounin
November 23, 2010 08:18PM
Hello!

On Wed, Nov 24, 2010 at 12:43:46AM +0100, Hongli Lai wrote:

> Maxim Dounin wrote in post #963250:
> > Working with events isn't something trivial, but basically you'll
> > have to connect via ngx_event_connect_peer(), set up appropriate
> > read/write handlers in resulting connection structure and call
> > ngx_handle_(read|write)_event() as appropriate.
>
> I need to use ngx_add_event for registering a read/write watcher, right?

No. Depending on event method used there are different things
required, e.g. with epoll and rtsig you have to call
ngx_add_conn() to add connection to the event loop first. And
calling ngx_add_event() isn't needed (unless you are trying to do
something non-standard or optimize specific case),
ngx_handle_(read|write)_event() will do it for you.

Use ngx_event_connect_peer(), it will handle these details for
you.

> So I need to allocate an ngx_event_s struct, set its 'handler' member to
> my handler function, and call ngx_add_event(&evt, NGX_READ_EVENT, 0)? Do
> I need to set any other members for it to work? Do I need to zero the
> structure if I don't set anything else?

See above, use ngx_event_connect_peer().

You may do the same steps by hand but this anyway will require
almost the same code, connection structure and so on.

> What are appropriate times to call ngx_handle_read/write_event? What do
> those functions do? Isn't the main loop supposed to call event handler
> functions for me?

You should call ngx_handle_(read|write)_event() when you've done
processing event (to re-enable this particular event in event
loop, or to disable it if level-triggered event method used and
event is still ready) or when you are going to wait for another
event (to activate particular event in the even loop).

Don't hesitate to look into event/ngx_event.c. These functions
basically call ngx_add_event/ngx_del_event based on various
conditions depending on event method used.

Maxim Dounin

_______________________________________________
nginx mailing list
nginx@nginx.org
http://nginx.org/mailman/listinfo/nginx
Subject Author Posted

How can a content handler block on certain events before sending a response?

Hongli Lai November 22, 2010 06:38PM

Re: How can a content handler block on certain events before sending a response?

Maxim Dounin November 22, 2010 07:52PM

Re: How can a content handler block on certain events before sending a response?

Hongli Lai November 23, 2010 06:48PM

Re: How can a content handler block on certain events before sending a response?

Maxim Dounin November 23, 2010 08:18PM

Re: How can a content handler block on certain events before sending aresponse?

Piotr Sikora November 22, 2010 10:32PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 145
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready