X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fcallback.cc;h=a43eef93065d8716806d4ef2c3af4124f8e75e12;hb=a83eb6704af40530cf38935cb30dd576af563e61;hp=36f4b309ed99f81d43b647a3dc91aafcfccbb537;hpb=fddf0928bfebaa0ff1535c0973cfabf5e001e72d;p=awesomized%2Flibmemcached diff --git a/libmemcached/callback.cc b/libmemcached/callback.cc index 36f4b309..a43eef93 100644 --- a/libmemcached/callback.cc +++ b/libmemcached/callback.cc @@ -20,75 +20,82 @@ 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) { @@ -147,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; }