diff src/os/win32/ngx_process.h @ 2725:d43d73277c5c

Win32 master/workers model
author Igor Sysoev <igor@sysoev.ru>
date Mon, 20 Apr 2009 06:08:47 +0000
parents 511a89da35ad
children 1983932b8075
line wrap: on
line diff
--- a/src/os/win32/ngx_process.h
+++ b/src/os/win32/ngx_process.h
@@ -8,38 +8,71 @@
 #define _NGX_PROCESS_H_INCLUDED_
 
 
-typedef DWORD            ngx_pid_t;
-#define NGX_INVALID_PID  0
+typedef DWORD               ngx_pid_t;
+#define NGX_INVALID_PID     0
 
 
-#define ngx_getpid   GetCurrentProcessId
-#define ngx_log_pid  ngx_pid
+#define ngx_getpid          GetCurrentProcessId
+#define ngx_log_pid         ngx_pid
+
+
+#define NGX_PROCESS_SYNC_NAME                                                 \
+    (sizeof("ngx_cache_manager_mutex_") + NGX_INT32_LEN)
 
 
 typedef struct {
-    char         *path;
-    char         *name;
-    char *const  *argv;
-    char *const  *envp;
+    HANDLE                  handle;
+    ngx_pid_t               pid;
+    char                   *name;
+
+    HANDLE                  term;
+    HANDLE                  quit;
+    HANDLE                  reopen;
+
+    u_char                  term_event[NGX_PROCESS_SYNC_NAME];
+    u_char                  quit_event[NGX_PROCESS_SYNC_NAME];
+    u_char                  reopen_event[NGX_PROCESS_SYNC_NAME];
+
+    unsigned                just_respawn:1;
+    unsigned                exiting:1;
+} ngx_process_t;
+
+
+typedef struct {
+    char                   *path;
+    char                   *name;
+    char *const            *argv;
+    char *const            *envp;
+    HANDLE                  child;
 } ngx_exec_ctx_t;
 
 
-#define NGX_PROCESS_SINGLE   0
-#define NGX_PROCESS_MASTER   1
-#define NGX_PROCESS_WORKER   2
+#define NGX_PROCESS_SINGLE  0
+#define NGX_PROCESS_MASTER  1
+#define NGX_PROCESS_WORKER  2
 
 
+ngx_pid_t ngx_spawn_process(ngx_cycle_t *cycle, char *name, ngx_int_t respawn);
 ngx_pid_t ngx_execute(ngx_cycle_t *cycle, ngx_exec_ctx_t *ctx);
 
 #define ngx_debug_point()
-#define ngx_sched_yield()  Sleep(0)
+#define ngx_sched_yield()   Sleep(0)
+
+
+#define NGX_MAX_PROCESSES         (MAXIMUM_WAIT_OBJECTS - 4)
+
+#define NGX_PROCESS_RESPAWN       -2
+#define NGX_PROCESS_JUST_RESPAWN  -3
 
 
-extern int            ngx_argc;
-extern char         **ngx_argv;
-extern char         **ngx_os_argv;
+extern int                  ngx_argc;
+extern char               **ngx_argv;
+extern char               **ngx_os_argv;
 
-extern ngx_pid_t      ngx_pid;
+extern ngx_int_t            ngx_last_process;
+extern ngx_process_t        ngx_processes[NGX_MAX_PROCESSES];
+
+extern ngx_pid_t            ngx_pid;
 
 
 #endif /* _NGX_PROCESS_H_INCLUDED_ */