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