projects
/
m6w6
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
add memflush tool
[m6w6/libmemcached]
/
lib
/
memcached_get.c
diff --git
a/lib/memcached_get.c
b/lib/memcached_get.c
index ffecba29b9a45535260dae71d4cc94f4fb91ce1b..a18854506d4743b9fb7d404786adbd16434c34e1 100644
(file)
--- a/
lib/memcached_get.c
+++ b/
lib/memcached_get.c
@@
-8,23
+8,29
@@
char *memcached_get(memcached_st *ptr, char *key, size_t key_length,
size_t send_length;
char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
char *string_ptr;
size_t send_length;
char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
char *string_ptr;
+ unsigned int server_key;
+ *value_length= 0;
*error= memcached_connect(ptr);
*error= memcached_connect(ptr);
+ if (*error != MEMCACHED_SUCCESS)
+ return NULL;
+
+ server_key= memcached_generate_hash(key, key_length) % ptr->number_of_hosts;
+
send_length= snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, "get %.*s\r\n",
send_length= snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, "get %.*s\r\n",
- key_length, key);
+
(int)
key_length, key);
if (*error != MEMCACHED_SUCCESS)
return NULL;
if (*error != MEMCACHED_SUCCESS)
return NULL;
- if ((
send(ptr->fd, buffer, send_length, 0
) == -1))
+ if ((
write(ptr->hosts[server_key].fd, buffer, send_length
) == -1))
{
{
- fprintf(stderr, "failed fetch on %.*s TCP\n", key_length+1, key);
*error= MEMCACHED_WRITE_FAILURE;
return NULL;
}
memset(buffer, 0, MEMCACHED_DEFAULT_COMMAND_SIZE);
*error= MEMCACHED_WRITE_FAILURE;
return NULL;
}
memset(buffer, 0, MEMCACHED_DEFAULT_COMMAND_SIZE);
- *error= memcached_response(ptr, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE);
+ *error= memcached_response(ptr, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE
, server_key
);
if (*error == MEMCACHED_SUCCESS)
{
if (*error == MEMCACHED_SUCCESS)
{
@@
-76,7
+82,7
@@
char *memcached_get(memcached_st *ptr, char *key, size_t key_length,
need_to_read= *value_length - need_to_copy;
need_to_read= *value_length - need_to_copy;
- read_length= read(ptr->fd, pos_ptr, need_to_read);
+ read_length= read(ptr->
hosts[server_key].
fd, pos_ptr, need_to_read);
if (read_length != need_to_read)
{
free(value);
if (read_length != need_to_read)
{
free(value);