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: