+static inline memcached_return_t meta_delete(memcached_instance_st *instance,
+ const char *key, size_t key_length,
+ time_t expiration) {
+
+ char ex_buf[32] = " I T";
+ size_t io_num = 0, ex_len = strlen(ex_buf);
+ libmemcached_io_vector_st io_vec[6] = {};
+ io_vec[io_num++] = {memcached_literal_param("md ")};
+ io_vec[io_num++] = {memcached_array_string(instance->root->_namespace),
+ memcached_array_size(instance->root->_namespace)};
+ io_vec[io_num++] = {key, key_length};
+ if (!memcached_is_replying(instance->root)) {
+ io_vec[io_num++] = {" q", 2};
+ }
+ if (expiration) {
+ ex_len += snprintf(ex_buf + ex_len, sizeof(ex_buf) - ex_len, "%llu", (unsigned long long) expiration);
+ io_vec[io_num++] = {ex_buf, ex_len};
+ }
+ io_vec[io_num++] = {memcached_literal_param("\r\n")};
+
+ /* Send command header, only flush if we are NOT buffering */
+ return memcached_vdo(instance, io_vec, io_num, !memcached_is_buffering(instance->root));
+}
+