Mercurial > hg > nginx
comparison src/os/unix/ngx_aio_write_chain.c @ 95:b48066122884
nginx-0.0.1-2003-05-23-15:53:01 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 23 May 2003 11:53:01 +0000 |
parents | 738fe44c70d5 |
children | ef8c87afcfc5 |
comparison
equal
deleted
inserted
replaced
94:8220378432a8 | 95:b48066122884 |
---|---|
15 | 15 |
16 sent = 0; | 16 sent = 0; |
17 ce = in; | 17 ce = in; |
18 | 18 |
19 while (ce) { | 19 while (ce) { |
20 | |
21 ngx_log_debug(c->log, "aio_write ce: %x" _ ce->hunk->pos); | |
22 | |
23 buf = prev = ce->hunk->pos; | 20 buf = prev = ce->hunk->pos; |
24 size = 0; | 21 size = 0; |
25 | 22 |
26 /* coalesce the neighbouring chain entries */ | 23 /* coalesce the neighbouring chain entries */ |
27 while (ce && prev == ce->hunk->pos) { | 24 while (ce && prev == ce->hunk->pos) { |
30 ce = ce->next; | 27 ce = ce->next; |
31 } | 28 } |
32 | 29 |
33 rc = ngx_aio_write(c, buf, size); | 30 rc = ngx_aio_write(c, buf, size); |
34 | 31 |
35 ngx_log_debug(c->log, "aio_write rc: %d" _ rc); | 32 #if (NGX_DEBUG_WRITE_CHAIN) |
33 ngx_log_debug(c->log, "aio_write rc: %d" _ rc); | |
34 #endif | |
36 | 35 |
37 if (rc > 0) { | 36 if (rc > 0) { |
38 sent += rc; | 37 sent += rc; |
39 c->sent += rc; | 38 c->sent += rc; |
40 | 39 |
50 ngx_log_debug(c->log, "aio_write sent: " OFF_FMT _ c->sent); | 49 ngx_log_debug(c->log, "aio_write sent: " OFF_FMT _ c->sent); |
51 #endif | 50 #endif |
52 | 51 |
53 for (ce = in; ce; ce = ce->next) { | 52 for (ce = in; ce; ce = ce->next) { |
54 | 53 |
55 #if (NGX_DEBUG_WRITE_CHAIN) | 54 if (sent >= ce->hunk->last - ce->hunk->pos) { |
56 ngx_log_debug(c->log, "write chain: %x %qx %qd" _ | 55 sent -= ce->hunk->last - ce->hunk->pos; |
57 ce->hunk->type _ | 56 ce->hunk->pos = ce->hunk->last; |
58 ce->hunk->file_pos _ | |
59 ce->hunk->file_last - ce->hunk->file_pos); | |
60 #endif | |
61 | 57 |
62 if (sent >= ce->hunk->file_last - ce->hunk->file_pos) { | |
63 sent -= ce->hunk->file_last - ce->hunk->file_pos; | |
64 ce->hunk->file_pos = ce->hunk->file_last; | |
65 | |
66 #if (NGX_DEBUG_WRITE_CHAIN) | |
67 ngx_log_debug(c->log, "write chain done: %qx %qd" _ | |
68 ce->hunk->file_pos _ sent); | |
69 #endif | |
70 continue; | 58 continue; |
71 } | 59 } |
72 | 60 |
73 ce->hunk->file_pos += sent; | 61 ce->hunk->pos += sent; |
74 | |
75 #if (NGX_DEBUG_WRITE_CHAIN) | |
76 ngx_log_debug(c->log, "write chain rest: %qx %qd" _ | |
77 ce->hunk->file_pos _ | |
78 ce->hunk->file_last - ce->hunk->file_pos); | |
79 #endif | |
80 | 62 |
81 break; | 63 break; |
82 } | 64 } |
83 | 65 |
84 return ce; | 66 return ce; |