Annotation of parser3/src/lib/memcached/pa_memcached.C, revision 1.2
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.2 ! moko 10: volatile const char * IDENT_PA_MEMCACHED_C="$Id: pa_memcached.C,v 1.1 2012-03-19 22:20:29 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;
! 29: t_memcached_result_key_value f_memcached_result_key_value;
! 30: t_memcached_result_value f_memcached_result_value;
! 31:
1.1 moko 32: #define GLINK(name) f_##name=(t_##name)lt_dlsym(handle, #name);
33: #define DLINK(name) GLINK(name) if(!f_##name) return "function " #name " was not found";
34:
35: static const char *dlink(const char *dlopen_file_spec) {
36: if(lt_dlinit())
37: return lt_dlerror();
38:
39: lt_dlhandle handle=lt_dlopen(dlopen_file_spec);
40:
41: if(!handle){
42: if(const char* result=lt_dlerror())
43: return result;
44: return "can not open the dynamic link module";
45: }
46:
47: DLINK(memcached_create);
48: DLINK(memcached_free);
49: DLINK(memcached_strerror);
1.2 ! moko 50:
1.1 moko 51: DLINK(memcached_server_push);
52: DLINK(memcached_servers_parse);
1.2 ! moko 53:
! 54: DLINK(memcached_flush);
! 55:
1.1 moko 56: DLINK(memcached_get);
57: DLINK(memcached_delete);
58: DLINK(memcached_mget);
59: DLINK(memcached_set);
60:
1.2 ! moko 61: DLINK(memcached_fetch_result);
! 62: DLINK(memcached_result_create);
! 63: DLINK(memcached_result_free);
! 64: DLINK(memcached_result_key_value);
! 65: DLINK(memcached_result_value);
! 66:
1.1 moko 67: return 0;
68: }
69:
70: bool memcached_linked = false;
71: const char *memcached_status = 0;
72:
73: const char *memcached_load(const char *library_name){
74: if(!memcached_linked){
75: memcached_linked=true;
76: memcached_status=dlink(library_name);
77: }
78:
79: return memcached_status;
80: }
E-mail: