3 memcached_return
memcached_delete(memcached_st
*ptr
, char *key
, size_t key_length
,
6 return memcached_delete_by_key(ptr
, key
, key_length
,
7 key
, key_length
, expiration
);
10 memcached_return
memcached_delete_by_key(memcached_st
*ptr
,
11 char *master_key
, size_t master_key_length
,
12 char *key
, size_t key_length
,
18 char buffer
[MEMCACHED_DEFAULT_COMMAND_SIZE
];
19 unsigned int server_key
;
21 LIBMEMCACHED_MEMCACHED_DELETE_START();
24 return MEMCACHED_NO_KEY_PROVIDED
;
26 if (ptr
->hosts
== NULL
|| ptr
->number_of_hosts
== 0)
27 return MEMCACHED_NO_SERVERS
;
29 server_key
= memcached_generate_hash(ptr
, master_key
, master_key_length
);
32 send_length
= snprintf(buffer
, MEMCACHED_DEFAULT_COMMAND_SIZE
,
33 "delete %.*s %llu\r\n", (int)key_length
, key
,
34 (unsigned long long)expiration
);
36 send_length
= snprintf(buffer
, MEMCACHED_DEFAULT_COMMAND_SIZE
,
37 "delete %.*s\r\n", (int)key_length
, key
);
39 if (send_length
>= MEMCACHED_DEFAULT_COMMAND_SIZE
)
41 rc
= MEMCACHED_WRITE_FAILURE
;
45 if ((ptr
->flags
& MEM_NO_BLOCK
))
50 rc
= memcached_do(ptr
, server_key
, buffer
, send_length
, to_write
);
51 if (rc
!= MEMCACHED_SUCCESS
)
54 if ((ptr
->flags
& MEM_NO_BLOCK
))
56 rc
= MEMCACHED_SUCCESS
;
60 rc
= memcached_response(ptr
, buffer
, MEMCACHED_DEFAULT_COMMAND_SIZE
, NULL
, server_key
);
61 if (rc
== MEMCACHED_DELETED
)
62 rc
= MEMCACHED_SUCCESS
;
66 LIBMEMCACHED_MEMCACHED_DELETE_END();
70 memcached_return
memcached_mdelete(memcached_st
*ptr
,
71 char **key
, size_t *key_length
,
72 unsigned int number_of_keys
,
75 return memcached_mdelete_by_key(ptr
, NULL
, 0,
77 number_of_keys
, expiration
);
81 memcached_return
memcached_mdelete_by_key(memcached_st
*ptr
,
82 char *master_key
, size_t master_key_length
,
83 char **key
, size_t *key_length
,
84 unsigned int number_of_keys
,
88 memcached_return rc
= MEMCACHED_SUCCESS
;
89 char buffer
[MEMCACHED_DEFAULT_COMMAND_SIZE
];
90 unsigned int master_server_key
= 0;
93 LIBMEMCACHED_MEMCACHED_DELETE_START();
95 if (ptr
->hosts
== NULL
|| ptr
->number_of_hosts
== 0)
96 return MEMCACHED_NO_SERVERS
;
98 if (master_key
&& master_key_length
)
99 master_server_key
= memcached_generate_hash(ptr
, master_key
, master_key_length
);
101 for (x
= 0; x
< number_of_keys
; x
++)
103 unsigned int server_key
;
105 if (master_key
&& master_key_length
)
106 server_key
= master_server_key
;
108 server_key
= memcached_generate_hash(ptr
, key
[x
], key_length
[x
]);
111 send_length
= snprintf(buffer
, MEMCACHED_DEFAULT_COMMAND_SIZE
,
112 "delete %.*s %llu\r\n", (int)(key_length
[x
]), key
[x
],
113 (unsigned long long)expiration
);
115 send_length
= snprintf(buffer
, MEMCACHED_DEFAULT_COMMAND_SIZE
,
116 "delete %.*s\r\n", (int)(key_length
[x
]), key
[x
]);
118 (void)memcached_do(ptr
, server_key
, buffer
, send_length
, 0);
121 for (x
= 0; x
< ptr
->number_of_hosts
; x
++)
123 if (memcached_server_response_count(ptr
, x
))
125 /* We need to do something about non-connnected hosts in the future */
126 if ((memcached_io_write(ptr
, x
, NULL
, 0, 1)) == -1)
128 rc
= MEMCACHED_SOME_ERRORS
;
133 LIBMEMCACHED_MEMCACHED_DELETE_END();