ret_t cherokee_plugin_loader_init (cherokee_plugin_loader_t *loader) { ret_t ret; ret = cherokee_avl_init (&loader->table); if (unlikely(ret < ret_ok)) return ret; /* Plug-in dir */ ret = cherokee_buffer_init (&loader->module_dir); if (unlikely(ret < ret_ok)) return ret; cherokee_buffer_add_str (&loader->module_dir, CHEROKEE_PLUGINDIR); /* Plug-in dependencies dir */ ret = cherokee_buffer_init (&loader->deps_dir); if (unlikely(ret < ret_ok)) return ret; cherokee_buffer_add_str (&loader->deps_dir, CHEROKEE_DEPSDIR); ret = load_static_linked_modules (loader); if (unlikely(ret < ret_ok)) return ret; return ret_ok; }
ret_t cherokee_rule_extensions_new (cherokee_rule_extensions_t **rule) { CHEROKEE_NEW_STRUCT (n, rule_extensions); /* Parent class constructor */ cherokee_rule_init_base (RULE(n), PLUGIN_INFO_PTR(extensions)); /* Virtual methods */ RULE(n)->match = (rule_func_match_t) match; RULE(n)->configure = (rule_func_configure_t) configure; MODULE(n)->free = (module_func_free_t) _free; /* Properties */ n->check_local_file = false; n->use_iocache = true; cherokee_avl_init (&n->extensions); *rule = n; return ret_ok; }
ret_t cherokee_rule_geoip_new (cherokee_rule_t **rule) { CHEROKEE_NEW_STRUCT (n, rule_geoip); /* Parent class constructor */ cherokee_rule_init_base (RULE(n), PLUGIN_INFO_PTR(geoip)); /* Virtual methods */ RULE(n)->match = (rule_func_match_t) match; RULE(n)->configure = (rule_func_configure_t) configure; MODULE(n)->free = (module_func_free_t) _free; /* Properties */ n->geoip = geoip_get(); if (n->geoip == NULL) return ret_error; cherokee_avl_init (&n->countries); *rule = RULE(n); return ret_ok; }
ret_t cherokee_handler_proxy_hosts_init (cherokee_handler_proxy_hosts_t *hosts) { CHEROKEE_MUTEX_INIT (&hosts->hosts_mutex, CHEROKEE_MUTEX_FAST); cherokee_avl_init (&hosts->hosts); cherokee_buffer_init (&hosts->tmp); return ret_ok; }
/* Table */ ret_t cherokee_resolv_cache_init (cherokee_resolv_cache_t *resolv) { ret_t ret; ret = cherokee_avl_init (&resolv->table); if (unlikely (ret != ret_ok)) return ret; ret = cherokee_avl_set_case (&resolv->table, true); if (unlikely (ret != ret_ok)) return ret; CHEROKEE_RWLOCK_INIT (&resolv->lock, NULL); return ret_ok; }
ret_t cherokee_avl_r_init (cherokee_avl_r_t *avl_r) { ret_t ret; CHEROKEE_NEW_STRUCT(n, avl_r_priv); ret = cherokee_avl_init (&avl_r->avl); if (ret != ret_ok) return ret; avl_r->priv = n; CHEROKEE_RWLOCK_INIT (AVL_R_LOCK(avl_r), NULL); return ret_ok; }
ret_t cherokee_regex_table_new (cherokee_regex_table_t **table) { CHEROKEE_NEW_STRUCT (n, regex_table); /* Init */ CHEROKEE_RWLOCK_INIT (&n->rwlock, NULL); cherokee_avl_init (&n->cache); /* Return the new object */ *table = n; return ret_ok; }