Annotation of parser3/src/lib/memcached/pa_memcached.C, revision 1.12
1.1 moko 1: /** @file
2: Parser: memcached support impl.
1.12 ! moko 3: Copyright (c) 2001-2023 Art. Lebedev Studio (http://www.artlebedev.com)
1.1 moko 4: */
5:
6: #include "pa_config_includes.h"
7: #include "pa_memcached.h"
8: #include "ltdl.h"
9:
1.12 ! moko 10: volatile const char * IDENT_PA_MEMCACHED_C="$Id: pa_memcached.C,v 1.11 2020/12/15 17:10:33 moko Exp $";
1.1 moko 11:
1.4 moko 12: t_memcached f_memcached=0;
1.1 moko 13: t_memcached_create f_memcached_create;
14: t_memcached_free f_memcached_free;
15: t_memcached_strerror f_memcached_strerror;
1.2 moko 16:
1.1 moko 17: t_memcached_server_push f_memcached_server_push;
18: t_memcached_servers_parse f_memcached_servers_parse;
1.6 moko 19: t_memcached_version f_memcached_version;
1.2 moko 20:
21: t_memcached_flush f_memcached_flush;
1.7 moko 22: t_memcached_quit f_memcached_quit;
1.2 moko 23:
1.1 moko 24: t_memcached_get f_memcached_get;
25: t_memcached_delete f_memcached_delete;
26: t_memcached_mget f_memcached_mget;
27: t_memcached_set f_memcached_set;
1.5 moko 28: t_memcached_add f_memcached_add;
1.1 moko 29:
1.2 moko 30: t_memcached_fetch_result f_memcached_fetch_result;
31: t_memcached_result_create f_memcached_result_create;
32: t_memcached_result_free f_memcached_result_free;
1.3 moko 33:
1.2 moko 34: t_memcached_result_key_value f_memcached_result_key_value;
35: t_memcached_result_value f_memcached_result_value;
1.3 moko 36: t_memcached_result_key_length f_memcached_result_key_length;
37: t_memcached_result_length f_memcached_result_length;
38: t_memcached_result_flags f_memcached_result_flags;
1.2 moko 39:
1.1 moko 40: #define GLINK(name) f_##name=(t_##name)lt_dlsym(handle, #name);
41: #define DLINK(name) GLINK(name) if(!f_##name) return "function " #name " was not found";
42:
1.8 moko 43: void pa_dlinit();
44:
1.1 moko 45: static const char *dlink(const char *dlopen_file_spec) {
1.8 moko 46: pa_dlinit();
1.1 moko 47:
48: lt_dlhandle handle=lt_dlopen(dlopen_file_spec);
49:
50: if(!handle){
51: if(const char* result=lt_dlerror())
52: return result;
53: return "can not open the dynamic link module";
54: }
55:
1.4 moko 56: GLINK(memcached);
1.1 moko 57: DLINK(memcached_create);
58: DLINK(memcached_free);
59: DLINK(memcached_strerror);
1.2 moko 60:
1.1 moko 61: DLINK(memcached_server_push);
62: DLINK(memcached_servers_parse);
1.6 moko 63: DLINK(memcached_version);
1.2 moko 64:
65: DLINK(memcached_flush);
1.7 moko 66: DLINK(memcached_quit);
1.2 moko 67:
1.1 moko 68: DLINK(memcached_get);
69: DLINK(memcached_delete);
70: DLINK(memcached_mget);
71: DLINK(memcached_set);
1.5 moko 72: DLINK(memcached_add);
1.1 moko 73:
1.2 moko 74: DLINK(memcached_fetch_result);
75: DLINK(memcached_result_create);
76: DLINK(memcached_result_free);
1.3 moko 77:
1.2 moko 78: DLINK(memcached_result_key_value);
79: DLINK(memcached_result_value);
1.3 moko 80: DLINK(memcached_result_key_length);
81: DLINK(memcached_result_length);
82: DLINK(memcached_result_flags);
1.2 moko 83:
1.1 moko 84: return 0;
85: }
86:
87: bool memcached_linked = false;
88: const char *memcached_status = 0;
89:
90: const char *memcached_load(const char *library_name){
91: if(!memcached_linked){
92: memcached_linked=true;
93: memcached_status=dlink(library_name);
94: }
95:
96: return memcached_status;
97: }
E-mail: