⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jk_util.c

📁 jboss与apache集成的中间件,详情请参看文档说明.
💻 C
📖 第 1 页 / 共 2 页
字号:
    int rv;    if (!m || !wname) {        return -1;    }    MAKE_WORKER_PARAM(RETRIES_OF_WORKER);    rv = jk_map_get_int(m, buf, def);    if (rv < 1)        rv = 1;    return rv;}int jk_get_worker_recovery_opts(jk_map_t *m, const char *wname, int def){    char buf[1024];    if (!m || !wname) {        return -1;    }    MAKE_WORKER_PARAM(RECOVERY_OPTS_OF_WORKER);    return jk_map_get_int(m, buf, def);}const char *jk_get_worker_secret_key(jk_map_t *m, const char *wname){    char buf[1024];    if (!m || !wname) {        return NULL;    }    MAKE_WORKER_PARAM(SECRET_KEY_OF_WORKER);    return jk_map_get_string(m, buf, NULL);}int jk_get_worker_list(jk_map_t *m, char ***list, unsigned *num_of_wokers){    if (m && list && num_of_wokers) {        char **ar = jk_map_get_string_list(m,                                        WORKER_LIST_PROPERTY_NAME,                                        num_of_wokers,                                        DEFAULT_WORKER);        if (ar) {            *list = ar;            return JK_TRUE;        }        *list = NULL;        *num_of_wokers = 0;    }    return JK_FALSE;}int jk_get_is_worker_disabled(jk_map_t *m, const char *wname){    int rc = JK_TRUE;    char buf[1024];    if (m && wname) {        int value;        MAKE_WORKER_PARAM(IS_WORKER_DISABLED);        value = jk_map_get_bool(m, buf, 0);        if (!value)            rc = JK_FALSE;    }    return rc;}int jk_get_is_worker_stopped(jk_map_t *m, const char *wname){    int rc = JK_TRUE;    char buf[1024];    if (m && wname) {        int value;        MAKE_WORKER_PARAM(IS_WORKER_STOPPED);        value = jk_map_get_bool(m, buf, 0);        if (!value)            rc = JK_FALSE;    }    return rc;}void jk_set_log_format(const char *logformat){    jk_log_fmt = (logformat) ? logformat : JK_TIME_FORMAT;}int jk_get_lb_factor(jk_map_t *m, const char *wname){    char buf[1024];    if (!m || !wname) {        return DEFAULT_LB_FACTOR;    }    MAKE_WORKER_PARAM(LOAD_FACTOR_OF_WORKER);    return jk_map_get_int(m, buf, DEFAULT_LB_FACTOR);}int jk_get_is_sticky_session(jk_map_t *m, const char *wname){    int rc = JK_TRUE;    char buf[1024];    if (m && wname) {        int value;        MAKE_WORKER_PARAM(STICKY_SESSION);        value = jk_map_get_bool(m, buf, 1);        if (!value)            rc = JK_FALSE;    }    return rc;}int jk_get_is_sticky_session_force(jk_map_t *m, const char *wname){    int rc = JK_FALSE;    char buf[1024];    if (m && wname) {        int value;        MAKE_WORKER_PARAM(STICKY_SESSION_FORCE);        value = jk_map_get_bool(m, buf, 0);        if (value)            rc = JK_TRUE;    }    return rc;}int jk_get_lb_method(jk_map_t *m, const char *wname){    char buf[1024];    const char *v;    if (!m || !wname) {        return DEFAULT_LB_FACTOR;    }    MAKE_WORKER_PARAM(METHOD_OF_WORKER);    v = jk_map_get_string(m, buf, NULL);    if (!v)        return JK_LB_BYREQUESTS;    else if  (*v == 't' || *v == 'T' || *v == '1')        return JK_LB_BYTRAFFIC;    else if  (*v == 'r' || *v == 'R' || *v == '0')        return JK_LB_BYREQUESTS;    else        return JK_LB_BYREQUESTS;}int jk_get_lb_lock(jk_map_t *m, const char *wname){    char buf[1024];    const char *v;    if (!m || !wname) {        return JK_LB_LOCK_DEFAULT;    }    MAKE_WORKER_PARAM(LOCK_OF_WORKER);    v = jk_map_get_string(m, buf, NULL);    if (!v)        return JK_LB_LOCK_DEFAULT;    else if  (*v == 'o' || *v == 'O' || *v == '0')        return JK_LB_LOCK_DEFAULT;    else if  (*v == 'p' || *v == 'P' || *v == '1')        return JK_LB_LOCK_PESSIMISTIC;    else        return JK_LB_LOCK_DEFAULT;}int jk_get_lb_worker_list(jk_map_t *m,                          const char *wname,                          char ***list, unsigned int *num_of_wokers){    char buf[1024];    if (m && list && num_of_wokers && wname) {        char **ar = NULL;        MAKE_WORKER_PARAM(BALANCE_WORKERS);        ar = jk_map_get_string_list(m, buf, num_of_wokers, NULL);        if (ar) {            *list = ar;            return JK_TRUE;        }        /* Try old balanced_workers directive */        MAKE_WORKER_PARAM(BALANCED_WORKERS);        ar = jk_map_get_string_list(m, buf, num_of_wokers, NULL);        if (ar) {            *list = ar;            return JK_TRUE;        }        *list = NULL;        *num_of_wokers = 0;    }    return JK_FALSE;}int jk_get_worker_mount_list(jk_map_t *m,                             const char *wname,                             char ***list, unsigned int *num_of_maps){    char buf[1024];    if (m && list && num_of_maps && wname) {        char **ar = NULL;        MAKE_WORKER_PARAM(MOUNT_OF_WORKER);        ar = jk_map_get_string_list(m, buf, num_of_maps, NULL);        if (ar) {            *list = ar;            return JK_TRUE;        }        *list = NULL;        *num_of_maps = 0;    }    return JK_FALSE;}int jk_get_worker_maintain_time(jk_map_t *m){    return jk_map_get_int(m, WORKER_MAINTAIN_PROPERTY_NAME,                          DEFAULT_MAINTAIN_TIME);}int jk_get_worker_mx(jk_map_t *m, const char *wname, unsigned *mx){    char buf[1024];    if (m && mx && wname) {        int i;        MAKE_WORKER_PARAM(MX_OF_WORKER);        i = jk_map_get_int(m, buf, -1);        if (-1 != i) {            *mx = (unsigned)i;            return JK_TRUE;        }    }    return JK_FALSE;}int jk_get_worker_ms(jk_map_t *m, const char *wname, unsigned *ms){    char buf[1024];    if (m && ms && wname) {        int i;        MAKE_WORKER_PARAM(MS_OF_WORKER);        i = jk_map_get_int(m, buf, -1);        if (-1 != i) {            *ms = (unsigned)i;            return JK_TRUE;        }    }    return JK_FALSE;}int jk_get_worker_classpath(jk_map_t *m, const char *wname, const char **cp){    char buf[1024];    if (m && cp && wname) {        MAKE_WORKER_PARAM(CP_OF_WORKER);        *cp = jk_map_get_string(m, buf, NULL);        if (*cp) {            return JK_TRUE;        }    }    return JK_FALSE;}int jk_get_worker_bridge_type(jk_map_t *m, const char *wname, unsigned *bt){    char buf[1024];    const char *type;    if (m && bt && wname) {        MAKE_WORKER_PARAM(BRIDGE_OF_WORKER);        type = jk_map_get_string(m, buf, NULL);        if (type) {            if (!strcasecmp(type, TOMCAT32_BRIDGE_NAME))                *bt = TC32_BRIDGE_TYPE;            else if (!strcasecmp(type, TOMCAT33_BRIDGE_NAME))                *bt = TC33_BRIDGE_TYPE;            else if (!strcasecmp(type, TOMCAT40_BRIDGE_NAME))                *bt = TC40_BRIDGE_TYPE;            else if (!strcasecmp(type, TOMCAT41_BRIDGE_NAME))                *bt = TC41_BRIDGE_TYPE;            else if (!strcasecmp(type, TOMCAT50_BRIDGE_NAME))                *bt = TC50_BRIDGE_TYPE;            return JK_TRUE;        }    }    return JK_FALSE;}int jk_get_worker_jvm_path(jk_map_t *m, const char *wname, const char **vm_path){    char buf[1024];    if (m && vm_path && wname) {        MAKE_WORKER_PARAM(JVM_OF_WORKER);        *vm_path = jk_map_get_string(m, buf, NULL);        if (*vm_path) {            return JK_TRUE;        }    }    return JK_FALSE;}/* [V] This is unused. currently. */int jk_get_worker_callback_dll(jk_map_t *m, const char *wname, const char **cb_path){    char buf[1024];    if (m && cb_path && wname) {        MAKE_WORKER_PARAM(NATIVE_LIB_OF_WORKER);        *cb_path = jk_map_get_string(m, buf, NULL);        if (*cb_path) {            return JK_TRUE;        }    }    return JK_FALSE;}int jk_get_worker_cmd_line(jk_map_t *m, const char *wname, const char **cmd_line){    char buf[1024];    if (m && cmd_line && wname) {        MAKE_WORKER_PARAM(CMD_LINE_OF_WORKER);        *cmd_line = jk_map_get_string(m, buf, NULL);        if (*cmd_line) {            return JK_TRUE;        }    }    return JK_FALSE;}int jk_file_exists(const char *f){    if (f) {        struct stat st;#ifdef AS400        if ((0 == stat(f, &st)) && (st.st_mode & _S_IFREG)) {#else        if ((0 == stat(f, &st)) && (st.st_mode & S_IFREG)) {#endif            return JK_TRUE;        }    }    return JK_FALSE;}static int jk_is_some_property(const char *prp_name, const char *suffix){    if (prp_name && suffix) {        size_t prp_name_len = strlen(prp_name);        size_t suffix_len = strlen(suffix);        if (prp_name_len >= suffix_len) {            const char *prp_suffix = prp_name + prp_name_len - suffix_len;            if (0 == strcmp(suffix, prp_suffix)) {                return JK_TRUE;            }        }    }    return JK_FALSE;}int jk_is_path_poperty(const char *prp_name){    return jk_is_some_property(prp_name, "path");}int jk_is_cmd_line_poperty(const char *prp_name){    return jk_is_some_property(prp_name, CMD_LINE_OF_WORKER);}static const char *unique_properties[] = {    HOST_OF_WORKER,    PORT_OF_WORKER,    TYPE_OF_WORKER,    CACHE_OF_WORKER,    CACHE_OF_WORKER_DEPRECATED,    CACHE_TIMEOUT_OF_WORKER,    RECOVERY_OPTS_OF_WORKER,    CONNECT_TIMEOUT_OF_WORKER,    PREPOST_TIMEOUT_OF_WORKER,    REPLY_TIMEOUT_OF_WORKER,    SOCKET_TIMEOUT_OF_WORKER,    SOCKET_BUFFER_OF_WORKER,    SOCKET_KEEPALIVE_OF_WORKER,    RECYCLE_TIMEOUT_OF_WORKER,    LOAD_FACTOR_OF_WORKER,    STICKY_SESSION,    STICKY_SESSION_FORCE,    DOMAIN_OF_WORKER,    REDIRECT_OF_WORKER,    MOUNT_OF_WORKER,    METHOD_OF_WORKER,    IS_WORKER_DISABLED,    IS_WORKER_STOPPED,    WORKER_RECOVER_TIME,    SECRET_OF_WORKER,    RETRIES_OF_WORKER,    NULL};int jk_is_unique_property(const char *prp_name){    const char **props = &unique_properties[0];    while (*props) {        if (jk_is_some_property(prp_name, *props))            return JK_TRUE;        props++;    }    return JK_FALSE;}int jk_get_worker_stdout(jk_map_t *m, const char *wname, const char **stdout_name){    char buf[1024];    if (m && stdout_name && wname) {        MAKE_WORKER_PARAM(STDOUT_OF_WORKER);        *stdout_name = jk_map_get_string(m, buf, NULL);        if (*stdout_name) {            return JK_TRUE;        }    }    return JK_FALSE;}int jk_get_worker_stderr(jk_map_t *m, const char *wname, const char **stderr_name){    char buf[1024];    if (m && stderr_name && wname) {        MAKE_WORKER_PARAM(STDERR_OF_WORKER);        *stderr_name = jk_map_get_string(m, buf, NULL);        if (*stderr_name) {            return JK_TRUE;        }    }    return JK_FALSE;}int jk_get_worker_sysprops(jk_map_t *m, const char *wname, const char **sysprops){    char buf[1024];    if (m && sysprops && wname) {        MAKE_WORKER_PARAM(SYSPROPS_OF_WORKER);        *sysprops = jk_map_get_string(m, buf, NULL);        if (*sysprops) {            return JK_TRUE;        }    }    return JK_FALSE;}int jk_get_worker_libpath(jk_map_t *m, const char *wname, const char **libpath){    char buf[1024];    if (m && libpath && wname) {        MAKE_WORKER_PARAM(LIBPATH_OF_WORKER);        *libpath = jk_map_get_string(m, buf, NULL);        if (*libpath) {            return JK_TRUE;        }    }    return JK_FALSE;}char **jk_parse_sysprops(jk_pool_t *p, const char *sysprops){    char **rc = NULL;#if defined(AS400) || defined(_REENTRANT)    char *lasts;#endif    if (p && sysprops) {        char *prps = jk_pool_strdup(p, sysprops);        if (prps && strlen(prps)) {            unsigned num_of_prps;            for (num_of_prps = 1; *sysprops; sysprops++) {                if ('*' == *sysprops) {                    num_of_prps++;                }            }            rc = jk_pool_alloc(p, (num_of_prps + 1) * sizeof(char *));            if (rc) {                unsigned i = 0;#if defined(AS400) || defined(_REENTRANT)                char *tmp = strtok_r(prps, "*", &lasts);#else                char *tmp = strtok(prps, "*");#endif                while (tmp && i < num_of_prps) {                    rc[i] = tmp;#if defined(AS400) || defined(_REENTRANT)                    tmp = strtok_r(NULL, "*", &lasts);#else                    tmp = strtok(NULL, "*");#endif                    i++;                }                rc[i] = NULL;            }        }    }    return rc;}void jk_append_libpath(jk_pool_t *p, const char *libpath){    char *env = NULL;    char *current = getenv(PATH_ENV_VARIABLE);    if (current) {        env = jk_pool_alloc(p, strlen(PATH_ENV_VARIABLE) +                            strlen(current) + strlen(libpath) + 5);        if (env) {            sprintf(env, "%s=%s%c%s",                    PATH_ENV_VARIABLE, libpath, PATH_SEPERATOR, current);        }    }    else {        env = jk_pool_alloc(p, strlen(PATH_ENV_VARIABLE) +                            strlen(libpath) + 5);        if (env) {            sprintf(env, "%s=%s", PATH_ENV_VARIABLE, libpath);        }    }    if (env) {        putenv(env);    }}void jk_init_ws_service(jk_ws_service_t *s){    s->ws_private = NULL;    s->pool = NULL;    s->method = NULL;    s->protocol = NULL;    s->req_uri = NULL;    s->remote_addr = NULL;    s->remote_host = NULL;    s->remote_user = NULL;    s->auth_type = NULL;    s->query_string = NULL;    s->server_name = NULL;    s->server_port = 80;    s->server_software = NULL;    s->content_length = 0;    s->is_chunked = 0;    s->no_more_chunks = 0;    s->content_read = 0;    s->is_ssl = JK_FALSE;    s->ssl_cert = NULL;    s->ssl_cert_len = 0;    s->ssl_cipher = NULL;    s->ssl_session = NULL;    s->headers_names = NULL;    s->headers_values = NULL;    s->num_headers = 0;    s->attributes_names = NULL;    s->attributes_values = NULL;    s->num_attributes = 0;    s->jvm_route = NULL;    s->retries = JK_RETRIES;}#ifdef _MT_CODE_PTHREADint jk_gettid(){    pthread_t t = pthread_self();#ifdef AS400    /* OS400 use 64 bits ThreadId, get only low 32 bits for now */    pthread_id_np_t       tid;    pthread_getunique_np(&t, &tid);    return ((int)(tid.intId.lo & 0xFFFFFFFF));#else    int tid = (int)(t & 0xFFFF);    return tid;#endif /* AS400 */}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -