X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fcallback.cc;h=bb001febd7f17399fbe6d603863d9b1aae0030ce;hb=326e812b0ca940bf90aaadf69312a0316091d0cb;hp=83d8ce8fc8ca33a1a16a684dd4b0796ef4417e65;hpb=c69776b7cf0d0c26b07abd83da8a797182ff6fae;p=awesomized%2Flibmemcached diff --git a/libmemcached/callback.cc b/libmemcached/callback.cc index 83d8ce8f..bb001feb 100644 --- a/libmemcached/callback.cc +++ b/libmemcached/callback.cc @@ -20,77 +20,83 @@ These functions provide data and function callback support */ -memcached_return_t memcached_callback_set(memcached_st *ptr, +memcached_return_t memcached_callback_set(memcached_st *shell, const memcached_callback_t flag, const void *data) { - switch (flag) + Memcached* ptr= memcached2Memcached(shell); + if (ptr) { - case MEMCACHED_CALLBACK_PREFIX_KEY: + switch (flag) { - return memcached_set_namespace(ptr, (char*)data, data ? strlen((char*)data) : 0); - } + case MEMCACHED_CALLBACK_PREFIX_KEY: + { + return memcached_set_namespace(ptr, (char*)data, data ? strlen((char*)data) : 0); + } - case MEMCACHED_CALLBACK_USER_DATA: - { - ptr->user_data= const_cast(data); - break; - } + case MEMCACHED_CALLBACK_USER_DATA: + { + ptr->user_data= const_cast(data); + break; + } - case MEMCACHED_CALLBACK_CLEANUP_FUNCTION: - { - memcached_cleanup_fn func= *(memcached_cleanup_fn *)&data; - ptr->on_cleanup= func; - break; - } + case MEMCACHED_CALLBACK_CLEANUP_FUNCTION: + { + memcached_cleanup_fn func= *(memcached_cleanup_fn *)&data; + ptr->on_cleanup= func; + break; + } - case MEMCACHED_CALLBACK_CLONE_FUNCTION: - { - memcached_clone_fn func= *(memcached_clone_fn *)&data; - ptr->on_clone= func; - break; - } + case MEMCACHED_CALLBACK_CLONE_FUNCTION: + { + memcached_clone_fn func= *(memcached_clone_fn *)&data; + ptr->on_clone= func; + break; + } - case MEMCACHED_CALLBACK_GET_FAILURE: - { - memcached_trigger_key_fn func= *(memcached_trigger_key_fn *)&data; - ptr->get_key_failure= func; - break; - } + case MEMCACHED_CALLBACK_GET_FAILURE: + { + memcached_trigger_key_fn func= *(memcached_trigger_key_fn *)&data; + ptr->get_key_failure= func; + break; + } - case MEMCACHED_CALLBACK_DELETE_TRIGGER: - { - if (data) // NULL would mean we are disabling. + case MEMCACHED_CALLBACK_DELETE_TRIGGER: { - if (memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS)) + if (data) // NULL would mean we are disabling. { - return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, memcached_literal_param("Delete triggers cannot be used if buffering is enabled")); + if (memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS)) + { + return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, memcached_literal_param("Delete triggers cannot be used if buffering is enabled")); + } + + if (memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_NOREPLY)) + { + return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, memcached_literal_param("Delete triggers cannot be used if MEMCACHED_BEHAVIOR_NOREPLY is set")); + } } - if (memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_NOREPLY)) - { - return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, memcached_literal_param("Delete triggers cannot be used if MEMCACHED_BEHAVIOR_NOREPLY is set")); - } + memcached_trigger_delete_key_fn func= *(memcached_trigger_delete_key_fn *)&data; + ptr->delete_trigger= func; + break; } - memcached_trigger_delete_key_fn func= *(memcached_trigger_delete_key_fn *)&data; - ptr->delete_trigger= func; - break; + case MEMCACHED_CALLBACK_MAX: + return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, memcached_literal_param("Invalid callback supplied")); } - case MEMCACHED_CALLBACK_MAX: - return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, memcached_literal_param("Invalid callback supplied")); + return MEMCACHED_SUCCESS; } - return MEMCACHED_SUCCESS; + return MEMCACHED_INVALID_ARGUMENTS; } -void *memcached_callback_get(memcached_st *ptr, +void *memcached_callback_get(memcached_st *shell, const memcached_callback_t flag, memcached_return_t *error) { + Memcached* ptr= memcached2Memcached(shell); memcached_return_t local_error; - if (error == NULL) { error = &local_error; @@ -148,7 +154,7 @@ void *memcached_callback_get(memcached_st *ptr, break; } - assert_msg(0, "Invalid behavior passed to memcached_behavior_set()"); + assert_msg(0, "Invalid callback passed to memcached_callback_get()"); *error= MEMCACHED_FAILURE; return NULL; }