2004-09-28 04:34:51 -04:00
|
|
|
|
|
|
|
/*
|
2004-09-29 12:00:49 -04:00
|
|
|
* Copyright (C) Igor Sysoev
|
2004-09-28 04:34:51 -04:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
2004-03-02 18:14:37 -03:00
|
|
|
#ifndef _NGX_EVENT_BUSY_LOCK_H_INCLUDED_
|
|
|
|
#define _NGX_EVENT_BUSY_LOCK_H_INCLUDED_
|
|
|
|
|
|
|
|
|
|
|
|
#include <ngx_config.h>
|
|
|
|
#include <ngx_core.h>
|
|
|
|
#include <ngx_event.h>
|
|
|
|
|
|
|
|
typedef struct ngx_event_busy_lock_ctx_s ngx_event_busy_lock_ctx_t;
|
|
|
|
|
|
|
|
struct ngx_event_busy_lock_ctx_s {
|
|
|
|
ngx_event_t *event;
|
|
|
|
ngx_event_handler_pt handler;
|
|
|
|
void *data;
|
|
|
|
ngx_msec_t timer;
|
|
|
|
|
|
|
|
unsigned locked:1;
|
2004-03-03 13:14:15 -03:00
|
|
|
unsigned waiting:1;
|
2004-03-02 18:14:37 -03:00
|
|
|
unsigned cache_updated:1;
|
|
|
|
|
|
|
|
char *md5;
|
|
|
|
ngx_int_t slot;
|
|
|
|
|
|
|
|
ngx_event_busy_lock_ctx_t *next;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
u_char *md5_mask;
|
|
|
|
char *md5;
|
|
|
|
ngx_uint_t cachable;
|
|
|
|
|
|
|
|
ngx_uint_t busy;
|
|
|
|
ngx_uint_t max_busy;
|
|
|
|
|
|
|
|
ngx_uint_t waiting;
|
|
|
|
ngx_uint_t max_waiting;
|
|
|
|
|
|
|
|
ngx_event_busy_lock_ctx_t *events;
|
|
|
|
ngx_event_busy_lock_ctx_t *last;
|
|
|
|
|
|
|
|
#if (NGX_THREADS)
|
|
|
|
ngx_mutex_t *mutex;
|
|
|
|
#endif
|
|
|
|
} ngx_event_busy_lock_t;
|
|
|
|
|
|
|
|
|
|
|
|
ngx_int_t ngx_event_busy_lock(ngx_event_busy_lock_t *bl,
|
2005-10-19 09:33:58 -03:00
|
|
|
ngx_event_busy_lock_ctx_t *ctx);
|
2004-03-02 18:14:37 -03:00
|
|
|
ngx_int_t ngx_event_busy_lock_cachable(ngx_event_busy_lock_t *bl,
|
2005-10-19 09:33:58 -03:00
|
|
|
ngx_event_busy_lock_ctx_t *ctx);
|
|
|
|
void ngx_event_busy_unlock(ngx_event_busy_lock_t *bl,
|
|
|
|
ngx_event_busy_lock_ctx_t *ctx);
|
|
|
|
void ngx_event_busy_lock_cancel(ngx_event_busy_lock_t *bl,
|
|
|
|
ngx_event_busy_lock_ctx_t *ctx);
|
2004-03-02 18:14:37 -03:00
|
|
|
|
|
|
|
|
|
|
|
#endif /* _NGX_EVENT_BUSY_LOCK_H_INCLUDED_ */
|