jk_lb_worker.h
来自「以便Apache与其他服务进行整合 Mod_JK安装」· C头文件 代码 · 共 178 行
H
178 行
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *//*************************************************************************** * Description: load balance worker header file * * Author: Gal Shachor <shachor@il.ibm.com> * * Author: Rainer Jung <rjung@apache.org> * * Version: $Revision: 550272 $ * ***************************************************************************/#ifndef JK_LB_WORKER_H#define JK_LB_WORKER_H#include "jk_logger.h"#include "jk_service.h"#include "jk_mt.h"#include "jk_shm.h"#ifdef __cplusplusextern "C"{#endif /* __cplusplus */#define JK_LB_WORKER_NAME ("lb")#define JK_LB_WORKER_TYPE (5)#define JK_LB_DEF_DOMAIN_NAME ("unknown")#define JK_LB_METHOD_REQUESTS (0)#define JK_LB_METHOD_TRAFFIC (1)#define JK_LB_METHOD_BUSYNESS (2)#define JK_LB_METHOD_SESSIONS (3)#define JK_LB_METHOD_DEF (JK_LB_METHOD_REQUESTS)#define JK_LB_METHOD_MAX (JK_LB_METHOD_SESSIONS)#define JK_LB_METHOD_TEXT_REQUESTS ("Request")#define JK_LB_METHOD_TEXT_TRAFFIC ("Traffic")#define JK_LB_METHOD_TEXT_BUSYNESS ("Busyness")#define JK_LB_METHOD_TEXT_SESSIONS ("Sessions")#define JK_LB_METHOD_TEXT_DEF (JK_LB_METHOD_TEXT_REQUESTS)#define JK_LB_LOCK_OPTIMISTIC (0)#define JK_LB_LOCK_PESSIMISTIC (1)#define JK_LB_LOCK_DEF (JK_LB_LOCK_OPTIMISTIC)#define JK_LB_LOCK_MAX (JK_LB_LOCK_PESSIMISTIC)#define JK_LB_LOCK_TEXT_OPTIMISTIC ("Optimistic")#define JK_LB_LOCK_TEXT_PESSIMISTIC ("Pessimistic")#define JK_LB_LOCK_TEXT_DEF (JK_LB_LOCK_TEXT_OPTIMISTIC)#define JK_LB_STATE_IDLE (0)#define JK_LB_STATE_OK (1)#define JK_LB_STATE_RECOVER (2)#define JK_LB_STATE_BUSY (3)#define JK_LB_STATE_ERROR (4)#define JK_LB_STATE_FORCE (5)#define JK_LB_STATE_PROBE (6)#define JK_LB_STATE_DEF (JK_LB_STATE_IDLE)#define JK_LB_STATE_TEXT_IDLE ("OK/IDLE")#define JK_LB_STATE_TEXT_OK ("OK")#define JK_LB_STATE_TEXT_RECOVER ("ERR/REC")#define JK_LB_STATE_TEXT_BUSY ("OK/BUSY")#define JK_LB_STATE_TEXT_ERROR ("ERR")#define JK_LB_STATE_TEXT_FORCE ("ERR/FRC")#define JK_LB_STATE_TEXT_PROBE ("ERR/PRB")#define JK_LB_STATE_TEXT_MAX (JK_LB_STATE_PROBE)#define JK_LB_STATE_TEXT_DEF (JK_LB_STATE_TEXT_IDLE)#define JK_LB_ACTIVATION_ACTIVE (0)#define JK_LB_ACTIVATION_DISABLED (1)#define JK_LB_ACTIVATION_STOPPED (2)#define JK_LB_ACTIVATION_DEF (JK_LB_ACTIVATION_ACTIVE)#define JK_LB_ACTIVATION_MAX (JK_LB_ACTIVATION_STOPPED)#define JK_LB_ACTIVATION_TEXT_ACTIVE ("ACT")#define JK_LB_ACTIVATION_TEXT_DISABLED ("DIS")#define JK_LB_ACTIVATION_TEXT_STOPPED ("STP")#define JK_LB_ACTIVATION_TEXT_DEF (JK_LB_ACTIVATION_TEXT_ACTIVE)#define JK_LB_UINT64_STR_SZ (21)#define JK_LB_NOTES_COUNT (9)#define JK_NOTE_LB_FIRST_NAME ("JK_LB_FIRST_NAME")#define JK_NOTE_LB_FIRST_VALUE ("JK_LB_FIRST_VALUE")#define JK_NOTE_LB_FIRST_ACCESSED ("JK_LB_FIRST_ACCESSED")#define JK_NOTE_LB_FIRST_READ ("JK_LB_FIRST_READ")#define JK_NOTE_LB_FIRST_TRANSFERRED ("JK_LB_FIRST_TRANSFERRED")#define JK_NOTE_LB_FIRST_ERRORS ("JK_LB_FIRST_ERRORS")#define JK_NOTE_LB_FIRST_BUSY ("JK_LB_FIRST_BUSY")#define JK_NOTE_LB_FIRST_ACTIVATION ("JK_LB_FIRST_ACTIVATION")#define JK_NOTE_LB_FIRST_STATE ("JK_LB_FIRST_STATE")#define JK_NOTE_LB_LAST_NAME ("JK_LB_LAST_NAME")#define JK_NOTE_LB_LAST_VALUE ("JK_LB_LAST_VALUE")#define JK_NOTE_LB_LAST_ACCESSED ("JK_LB_LAST_ACCESSED")#define JK_NOTE_LB_LAST_READ ("JK_LB_LAST_READ")#define JK_NOTE_LB_LAST_TRANSFERRED ("JK_LB_LAST_TRANSFERRED")#define JK_NOTE_LB_LAST_ERRORS ("JK_LB_LAST_ERRORS")#define JK_NOTE_LB_LAST_BUSY ("JK_LB_LAST_BUSY")#define JK_NOTE_LB_LAST_ACTIVATION ("JK_LB_LAST_ACTIVATION")#define JK_NOTE_LB_LAST_STATE ("JK_LB_LAST_STATE")/* Minimal time in ms to wait between get_endpoint retries for balanced workers */#define JK_LB_MIN_RETRY_WAIT (25)/* Maximal time in ms to wait between get_endpoint retries for balanced workers */#define JK_LB_MAX_RETRY_WAIT (100)/* Time to wait before retry. */#define WAIT_BEFORE_RECOVER (60)/* We accept doing global maintenance if we are *//* JK_LB_MAINTAIN_TOLERANCE seconds early. */#define JK_LB_MAINTAIN_TOLERANCE (2)/* We divide load values by 2^x during global maintenance. *//* The exponent x is JK_LB_DECAY_MULT*#MAINT_INTV_SINCE_LAST_MAINT */#define JK_LB_DECAY_MULT (1)struct worker_record{ jk_worker_t *w; /* Shared memory worker data */ jk_shm_worker_t *s; /* Current route. Can be name or domain */ const char *r;};typedef struct worker_record worker_record_t;struct lb_worker{ worker_record_t *lb_workers; unsigned int num_of_workers; char name[JK_SHM_STR_SIZ+1]; int sticky_session; int sticky_session_force; int recover_wait_time; int max_reply_timeouts; int retries; int lbmethod; int lblock; int maintain_time; unsigned int max_packet_size; unsigned int sequence; jk_pool_t p; jk_pool_atom_t buf[TINY_POOL_SIZE]; jk_worker_t worker; JK_CRIT_SEC cs; /* Shared memory worker data */ jk_shm_worker_t *s;};typedef struct lb_worker lb_worker_t;int JK_METHOD lb_worker_factory(jk_worker_t **w, const char *name, jk_logger_t *l);const char *jk_lb_get_lock(lb_worker_t *p, jk_logger_t *l);int jk_lb_get_lock_code(const char *v);const char *jk_lb_get_method(lb_worker_t *p, jk_logger_t *l);int jk_lb_get_method_code(const char *v);const char *jk_lb_get_state(worker_record_t *p, jk_logger_t *l);int jk_lb_get_state_code(const char *v);const char *jk_lb_get_activation(worker_record_t *p, jk_logger_t *l);int jk_lb_get_activation_code(const char *v);void reset_lb_values(lb_worker_t *p, jk_logger_t *l);void jk_lb_pull(lb_worker_t * p, jk_logger_t *l);void jk_lb_push(lb_worker_t * p, jk_logger_t *l);void update_mult(lb_worker_t * p, jk_logger_t *l);#ifdef __cplusplus}#endif /* __cplusplus */#endif /* JK_LB_WORKER_H */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?