xref: /unit/src/nxt_job_file_cache.c (revision 223:bf98efe2c55c)
1*0Sigor@sysoev.ru 
2*0Sigor@sysoev.ru /*
3*0Sigor@sysoev.ru  * Copyright (C) Igor Sysoev
4*0Sigor@sysoev.ru  * Copyright (C) NGINX, Inc.
5*0Sigor@sysoev.ru  */
6*0Sigor@sysoev.ru 
7*0Sigor@sysoev.ru 
8*0Sigor@sysoev.ru #include <nxt_main.h>
9*0Sigor@sysoev.ru 
10*0Sigor@sysoev.ru 
11*0Sigor@sysoev.ru typedef struct {
12*0Sigor@sysoev.ru     nxt_cache_node_t   node;
13*0Sigor@sysoev.ru     nxt_file_t         file;
14*0Sigor@sysoev.ru } nxt_file_cache_t;
15*0Sigor@sysoev.ru 
16*0Sigor@sysoev.ru 
17*0Sigor@sysoev.ru void
nxt_job_file_cache_read(nxt_cache_t * cache,nxt_job_file_t * jbf)18*0Sigor@sysoev.ru nxt_job_file_cache_read(nxt_cache_t *cache, nxt_job_file_t *jbf)
19*0Sigor@sysoev.ru {
20*0Sigor@sysoev.ru     nxt_file_cache_node_t  *node;
21*0Sigor@sysoev.ru 
22*0Sigor@sysoev.ru     node = nxt_cache_find(cache);
23*0Sigor@sysoev.ru 
24*0Sigor@sysoev.ru     if (node != NULL) {
25*0Sigor@sysoev.ru 
26*0Sigor@sysoev.ru         if (node->fd != -1) {
27*0Sigor@sysoev.ru             nxt_job_return(&jbf->job, jbf->ready_handler);
28*0Sigor@sysoev.ru             return;
29*0Sigor@sysoev.ru         }
30*0Sigor@sysoev.ru 
31*0Sigor@sysoev.ru         if (node->error != 0) {
32*0Sigor@sysoev.ru             nxt_job_return(&jbf->job, jbf->error_handler);
33*0Sigor@sysoev.ru             return;
34*0Sigor@sysoev.ru         }
35*0Sigor@sysoev.ru 
36*0Sigor@sysoev.ru         if (node->accessed + 60 > nxt_thread_time()) {
37*0Sigor@sysoev.ru             jbf->job.thread_pool = NULL;
38*0Sigor@sysoev.ru         }
39*0Sigor@sysoev.ru     }
40*0Sigor@sysoev.ru 
41*0Sigor@sysoev.ru     nxt_job_file_read(jbf);
42*0Sigor@sysoev.ru }
43