Mercurial > hg > nginx
annotate src/event/ngx_event_posted.h @ 4119:b66712cde67d
Upstream: pipe length and input_filter_init in buffered mode.
As long as ngx_event_pipe() has more data read from upstream than specified
in p->length it's passed to input filter even if buffer isn't yet full. This
allows to process data with known length without relying on connection close
to signal data end.
By default p->length is set to -1 in upstream module, i.e. end of data is
indicated by connection close. To set it from per-protocol handlers upstream
input_filter_init() now called in buffered mode (as well as in
unbuffered mode).
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 15 Sep 2011 19:00:47 +0000 |
parents | 9c2f3ed7a247 |
children | d620f497c50f |
rev | line source |
---|---|
441
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
377
diff
changeset
|
1 |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
377
diff
changeset
|
2 /* |
444
42d11f017717
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents:
441
diff
changeset
|
3 * Copyright (C) Igor Sysoev |
441
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
377
diff
changeset
|
4 */ |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
377
diff
changeset
|
5 |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
377
diff
changeset
|
6 |
306
6b91bfbc4123
nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
7 #ifndef _NGX_EVENT_POSTED_H_INCLUDED_ |
6b91bfbc4123
nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
8 #define _NGX_EVENT_POSTED_H_INCLUDED_ |
6b91bfbc4123
nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
9 |
6b91bfbc4123
nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
10 |
6b91bfbc4123
nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
11 #include <ngx_config.h> |
6b91bfbc4123
nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
12 #include <ngx_core.h> |
6b91bfbc4123
nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
13 #include <ngx_event.h> |
6b91bfbc4123
nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
14 |
6b91bfbc4123
nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
15 |
563 | 16 #if (NGX_THREADS) |
17 extern ngx_mutex_t *ngx_posted_events_mutex; | |
18 #endif | |
19 | |
20 | |
21 #define ngx_locked_post_event(ev, queue) \ | |
22 \ | |
23 if (ev->prev == NULL) { \ | |
24 ev->next = (ngx_event_t *) *queue; \ | |
25 ev->prev = (ngx_event_t **) queue; \ | |
26 *queue = ev; \ | |
27 \ | |
28 if (ev->next) { \ | |
29 ev->next->prev = &ev->next; \ | |
30 } \ | |
31 \ | |
32 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0, "post event %p", ev); \ | |
33 \ | |
34 } else { \ | |
35 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0, \ | |
36 "update posted event %p", ev); \ | |
37 } | |
38 | |
39 | |
40 #define ngx_post_event(ev, queue) \ | |
41 \ | |
42 ngx_mutex_lock(ngx_posted_events_mutex); \ | |
43 ngx_locked_post_event(ev, queue); \ | |
44 ngx_mutex_unlock(ngx_posted_events_mutex); | |
45 | |
373
018569a8f09c
nginx-0.0.7-2004-06-30-19:30:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
372
diff
changeset
|
46 |
375
744ccb59062d
nginx-0.0.7-2004-07-02-19:54:34 import
Igor Sysoev <igor@sysoev.ru>
parents:
374
diff
changeset
|
47 #define ngx_delete_posted_event(ev) \ |
563 | 48 \ |
49 *(ev->prev) = ev->next; \ | |
50 \ | |
51 if (ev->next) { \ | |
52 ev->next->prev = ev->prev; \ | |
53 } \ | |
54 \ | |
55 ev->prev = NULL; \ | |
56 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0, \ | |
57 "delete posted event %p", ev); | |
375
744ccb59062d
nginx-0.0.7-2004-07-02-19:54:34 import
Igor Sysoev <igor@sysoev.ru>
parents:
374
diff
changeset
|
58 |
373
018569a8f09c
nginx-0.0.7-2004-06-30-19:30:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
372
diff
changeset
|
59 |
306
6b91bfbc4123
nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
60 |
563 | 61 void ngx_event_process_posted(ngx_cycle_t *cycle, |
62 ngx_thread_volatile ngx_event_t **posted); | |
376
d0451e402e27
nginx-0.0.7-2004-07-05-10:55:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
375
diff
changeset
|
63 void ngx_wakeup_worker_thread(ngx_cycle_t *cycle); |
370
54f76b0b8dca
nginx-0.0.7-2004-06-27-22:01:57 import
Igor Sysoev <igor@sysoev.ru>
parents:
306
diff
changeset
|
64 |
563 | 65 #if (NGX_THREADS) |
66 ngx_int_t ngx_event_thread_process_posted(ngx_cycle_t *cycle); | |
67 #endif | |
68 | |
69 | |
70 extern ngx_thread_volatile ngx_event_t *ngx_posted_accept_events; | |
370
54f76b0b8dca
nginx-0.0.7-2004-06-27-22:01:57 import
Igor Sysoev <igor@sysoev.ru>
parents:
306
diff
changeset
|
71 extern ngx_thread_volatile ngx_event_t *ngx_posted_events; |
306
6b91bfbc4123
nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
72 |
6b91bfbc4123
nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
73 |
6b91bfbc4123
nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
74 #endif /* _NGX_EVENT_POSTED_H_INCLUDED_ */ |