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;