Annotation of parser3/src/lib/memcached/pa_memcached.C, revision 1.1
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:
! 10: volatile const char * IDENT_PA_MEMCACHED_C="$Id: memcached.C,v 1.1 2012-03-16 09:24:06 moko Exp $";
! 11:
! 12: t_memcached_create f_memcached_create;
! 13: t_memcached_free f_memcached_free;
! 14: t_memcached_strerror f_memcached_strerror;
! 15: t_memcached_server_push f_memcached_server_push;
! 16: t_memcached_servers_parse f_memcached_servers_parse;
! 17: t_memcached_get f_memcached_get;
! 18: t_memcached_delete f_memcached_delete;
! 19: t_memcached_mget f_memcached_mget;
! 20: t_memcached_set f_memcached_set;
! 21:
! 22: #define GLINK(name) f_##name=(t_##name)lt_dlsym(handle, #name);
! 23: #define DLINK(name) GLINK(name) if(!f_##name) return "function " #name " was not found";
! 24:
! 25: static const char *dlink(const char *dlopen_file_spec) {
! 26: if(lt_dlinit())
! 27: return lt_dlerror();
! 28:
! 29: lt_dlhandle handle=lt_dlopen(dlopen_file_spec);
! 30:
! 31: if(!handle){
! 32: if(const char* result=lt_dlerror())
! 33: return result;
! 34: return "can not open the dynamic link module";
! 35: }
! 36:
! 37: DLINK(memcached_create);
! 38: DLINK(memcached_free);
! 39: DLINK(memcached_strerror);
! 40: DLINK(memcached_server_push);
! 41: DLINK(memcached_servers_parse);
! 42: DLINK(memcached_get);
! 43: DLINK(memcached_delete);
! 44: DLINK(memcached_mget);
! 45: DLINK(memcached_set);
! 46:
! 47: return 0;
! 48: }
! 49:
! 50: bool memcached_linked = false;
! 51: const char *memcached_status = 0;
! 52:
! 53: const char *memcached_load(const char *library_name){
! 54: if(!memcached_linked){
! 55: memcached_linked=true;
! 56: memcached_status=dlink(library_name);
! 57: }
! 58:
! 59: return memcached_status;
! 60: }
E-mail: