src/server/daemon/func.c

changeset 415
d938228c382e
parent 115
51d9a15eac98
child 490
d218607f5a7e
equal deleted inserted replaced
414:99a34860c105 415:d938228c382e
26 * POSSIBILITY OF SUCH DAMAGE. 26 * POSSIBILITY OF SUCH DAMAGE.
27 */ 27 */
28 28
29 29
30 #include <stdlib.h> 30 #include <stdlib.h>
31 #include <ucx/map.h> 31 #include <cx/map.h>
32 #include <cx/hash_map.h>
32 33
33 #include "../public/nsapi.h" 34 #include "../public/nsapi.h"
34 #include "../util/pblock.h" 35 #include "../util/pblock.h"
35 36
36 #include "func.h" 37 #include "func.h"
37 38
38 UcxMap *function_map; 39 CxMap *function_map;
39 40
40 void func_init() { 41 void func_init() {
41 function_map = ucx_map_new(1337); 42 function_map = cxHashMapCreate(cxDefaultAllocator, 256);
42 } 43 }
43 44
44 void add_function(FuncStruct *func) { 45 void add_function(FuncStruct *func) {
45 struct FuncStruct *f = malloc(sizeof(FuncStruct)); 46 struct FuncStruct *f = malloc(sizeof(FuncStruct));
46 *f = *func; 47 *f = *func;
50 name[i] = '-'; 51 name[i] = '-';
51 } 52 }
52 } 53 }
53 f->name = name; 54 f->name = name;
54 log_ereport(LOG_VERBOSE, "add_function %s", f->name); 55 log_ereport(LOG_VERBOSE, "add_function %s", f->name);
55 ucx_map_cstr_put(function_map, (char*)f->name, f); 56 cxMapPut(function_map, cx_hash_key_str(f->name), f);
56 } 57 }
57 58
58 void add_functions(FuncStruct *funcs) { 59 void add_functions(FuncStruct *funcs) {
59 int i = 0; 60 int i = 0;
60 while(funcs[i].func != NULL) { 61 while(funcs[i].func != NULL) {
61 add_function(&funcs[i]); 62 add_function(&funcs[i]);
62 i++; 63 i++;
63 } 64 }
64 } 65 }
65 66
66 FuncStruct* get_function(char *name) { 67 FuncStruct* get_function(const char *name) {
67 for(int i=0;name[i]!='\0';i++) { 68 char *name_dup = strdup(name);
68 if(name[i] == '_') { 69 for(int i=0;name_dup[i]!='\0';i++) {
69 name[i] = '-'; 70 if(name_dup[i] == '_') {
71 name_dup[i] = '-';
70 } 72 }
71 } 73 }
72 return ucx_map_cstr_get(function_map, name); 74 void *ret = cxMapGet(function_map, cx_hash_key_str(name_dup));
75 free(name_dup);
76 return ret;
73 } 77 }
74 78
75 FuncStruct* func_resolve(pblock *pb, Session *sn, Request *rq) { 79 FuncStruct* func_resolve(pblock *pb, Session *sn, Request *rq) {
76 char *name = pblock_findkeyval(pb_key_fn, pb); 80 char *name = pblock_findkeyval(pb_key_fn, pb);
77 if(name == NULL) { 81 if(name == NULL) {

mercurial