1 2 /* $Id: fpm_process_ctl.h,v 1.6 2008/07/20 21:33:10 anight Exp $ */ 3 /* (c) 2007,2008 Andrei Nigmatulin */ 4 5 #ifndef FPM_PROCESS_CTL_H 6 #define FPM_PROCESS_CTL_H 1 7 8 #include "fpm_events.h" 9 10 /* spawn max 32 children at once */ 11 #define FPM_MAX_SPAWN_RATE (32) 12 /* 1s (in ms) heartbeat for idle server maintenance */ 13 #define FPM_IDLE_SERVER_MAINTENANCE_HEARTBEAT (1000) 14 /* a minimum of 130ms heartbeat for pctl */ 15 #define FPM_PCTL_MIN_HEARTBEAT (130) 16 17 18 struct fpm_child_s; 19 20 void fpm_pctl(int new_state, int action); 21 int fpm_pctl_can_spawn_children(); 22 int fpm_pctl_kill(pid_t pid, int how); 23 void fpm_pctl_kill_all(int signo); 24 void fpm_pctl_heartbeat(struct fpm_event_s *ev, short which, void *arg); 25 void fpm_pctl_perform_idle_server_maintenance_heartbeat(struct fpm_event_s *ev, short which, void *arg); 26 void fpm_pctl_on_socket_accept(struct fpm_event_s *ev, short which, void *arg); 27 int fpm_pctl_child_exited(); 28 int fpm_pctl_init_main(); 29 30 31 enum { 32 FPM_PCTL_STATE_UNSPECIFIED, 33 FPM_PCTL_STATE_NORMAL, 34 FPM_PCTL_STATE_RELOADING, 35 FPM_PCTL_STATE_TERMINATING, 36 FPM_PCTL_STATE_FINISHING 37 }; 38 39 enum { 40 FPM_PCTL_ACTION_SET, 41 FPM_PCTL_ACTION_TIMEOUT, 42 FPM_PCTL_ACTION_LAST_CHILD_EXITED 43 }; 44 45 enum { 46 FPM_PCTL_TERM, 47 FPM_PCTL_STOP, 48 FPM_PCTL_CONT, 49 FPM_PCTL_QUIT 50 }; 51 52 #endif 53 54