X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmemcached_callback.c;h=c231716d9b8ca9a35dab5fe67519b27d8b24cd4b;hb=f562c49d93b63a33b4c914a1c5b0ec43576aaafc;hp=ad21c10d500422289f9ac427b8bfb4b88268f622;hpb=3b706525e1b66b907905bb9eddd7fd824e8311de;p=m6w6%2Flibmemcached diff --git a/libmemcached/memcached_callback.c b/libmemcached/memcached_callback.c index ad21c10d..c231716d 100644 --- a/libmemcached/memcached_callback.c +++ b/libmemcached/memcached_callback.c @@ -13,6 +13,28 @@ memcached_return memcached_callback_set(memcached_st *ptr, { switch (flag) { + case MEMCACHED_CALLBACK_PREFIX_KEY: + { + char *key= (char *)data; + + if (key) + { + ptr->prefix_key_length= strlen(key); + if ((ptr->prefix_key_length > MEMCACHED_PREFIX_KEY_MAX_SIZE -1) + || (strcpy(ptr->prefix_key, key) == NULL)) + { + ptr->prefix_key_length= 0; + return MEMCACHED_BAD_KEY_PROVIDED; + } + } + else + { + memset(ptr->prefix_key, 0, MEMCACHED_PREFIX_KEY_MAX_SIZE); + ptr->prefix_key_length= 0; + } + + break; + } case MEMCACHED_CALLBACK_USER_DATA: { ptr->user_data= data; @@ -54,6 +76,12 @@ memcached_return memcached_callback_set(memcached_st *ptr, ptr->get_key_failure= func; break; } + case MEMCACHED_CALLBACK_DELETE_TRIGGER: + { + memcached_trigger_delete_key func= (memcached_trigger_delete_key)data; + ptr->delete_trigger= func; + break; + } default: return MEMCACHED_FAILURE; } @@ -71,6 +99,11 @@ void *memcached_callback_get(memcached_st *ptr, switch (flag) { + case MEMCACHED_CALLBACK_PREFIX_KEY: + { + *error= ptr->prefix_key[0] != 0 ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE; + return (void *)ptr->prefix_key; + } case MEMCACHED_CALLBACK_USER_DATA: { *error= ptr->user_data ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE; @@ -106,6 +139,11 @@ void *memcached_callback_get(memcached_st *ptr, *error= ptr->get_key_failure ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE; return (void *)ptr->get_key_failure; } + case MEMCACHED_CALLBACK_DELETE_TRIGGER: + { + *error= ptr->delete_trigger ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE; + return (void *)ptr->delete_trigger; + } default: WATCHPOINT_ASSERT(0); *error= MEMCACHED_FAILURE;