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: