| |
| /* |
| * Copyright (C) Igor Sysoev |
| */ |
| |
| |
| #ifndef _NGX_HTTP_BUSY_LOCK_H_INCLUDED_ |
| #define _NGX_HTTP_BUSY_LOCK_H_INCLUDED_ |
| |
| |
| #include <ngx_config.h> |
| #include <ngx_core.h> |
| #include <ngx_event.h> |
| #include <ngx_http.h> |
| |
| |
| typedef struct { |
| u_char *md5_mask; |
| char *md5; |
| int cachable; |
| |
| int busy; |
| int max_busy; |
| |
| int waiting; |
| int max_waiting; |
| |
| time_t timeout; |
| |
| ngx_event_mutex_t *mutex; |
| } ngx_http_busy_lock_t; |
| |
| |
| typedef struct { |
| time_t time; |
| ngx_event_t *event; |
| void (*event_handler)(ngx_event_t *ev); |
| u_char *md5; |
| int slot; |
| } ngx_http_busy_lock_ctx_t; |
| |
| |
| int ngx_http_busy_lock(ngx_http_busy_lock_t *bl, ngx_http_busy_lock_ctx_t *bc); |
| int ngx_http_busy_lock_cachable(ngx_http_busy_lock_t *bl, |
| ngx_http_busy_lock_ctx_t *bc, int lock); |
| void ngx_http_busy_unlock(ngx_http_busy_lock_t *bl, |
| ngx_http_busy_lock_ctx_t *bc); |
| |
| char *ngx_http_set_busy_lock_slot(ngx_conf_t *cf, ngx_command_t *cmd, |
| void *conf); |
| |
| |
| #endif /* _NGX_HTTP_BUSY_LOCK_H_INCLUDED_ */ |