Annotation of parser3/src/lib/memcached/pa_memcached.C, revision 1.9

1.1       moko        1: /** @file
                      2:        Parser: memcached support impl.
1.9     ! moko        3:        Copyright (c) 2001-2015 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.9     ! moko       10: volatile const char * IDENT_PA_MEMCACHED_C="$Id: pa_memcached.C,v 1.8 2013/07/05 21:09:57 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: