X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=example%2Finterface_v0.c;h=1a847ccf111f819e44be76a62ce3312651028423;hb=026339d350e4cbec41951eea4d64bda5caf9febc;hp=57459208dc8205f96b13c39aac1e06d46359b73a;hpb=da1be05d0e6fed21a14201dcea0dc2c71498bd74;p=awesomized%2Flibmemcached diff --git a/example/interface_v0.c b/example/interface_v0.c index 57459208..1a847ccf 100644 --- a/example/interface_v0.c +++ b/example/interface_v0.c @@ -4,12 +4,11 @@ * in the protocol library. You might want to have your copy of the protocol * specification next to your coffee ;-) */ + #include "config.h" + #include #include -#include -#include -#include #include #include #include @@ -18,7 +17,7 @@ #include #include -#include +#include #include "storage.h" #include "memcached_light.h" @@ -55,7 +54,7 @@ static protocol_binary_response_status quit_command_handler(const void *cookie, response_handler(cookie, header, (void*)&response); /* I need a better way to signal to close the connection */ - return PROTOCOL_BINARY_RESPONSE_EIO; + return PROTOCOL_BINARY_RESPONSE_EINTERNAL; } static protocol_binary_response_status get_command_handler(const void *cookie, @@ -81,7 +80,7 @@ static protocol_binary_response_status get_command_handler(const void *cookie, msg.response.message.body.flags= htonl(item->flags); char *ptr= (char*)(msg.response.bytes + sizeof(*header) + 4); uint32_t bodysize= 4; - msg.response.message.header.response.cas= htonll(item->cas); + msg.response.message.header.response.cas= example_htonll(item->cas); if (opcode == PROTOCOL_BINARY_CMD_GETK || opcode == PROTOCOL_BINARY_CMD_GETKQ) { memcpy(ptr, item->key, item->nkey); @@ -175,8 +174,8 @@ static protocol_binary_response_status arithmetic_command_handler(const void *co }; uint16_t keylen= ntohs(header->request.keylen); - uint64_t initial= ntohll(req->message.body.initial); - uint64_t delta= ntohll(req->message.body.delta); + uint64_t initial= example_ntohll(req->message.body.initial); + uint64_t delta= example_ntohll(req->message.body.delta); uint32_t expiration= ntohl(req->message.body.expiration); uint32_t flags= 0; void *key= req->bytes + sizeof(req->bytes); @@ -225,8 +224,8 @@ static protocol_binary_response_status arithmetic_command_handler(const void *co if (rval == PROTOCOL_BINARY_RESPONSE_SUCCESS) { response.message.header.response.bodylen= ntohl(8); - response.message.body.value= ntohll((*(uint64_t*)item->data)); - response.message.header.response.cas= ntohll(item->cas); + response.message.body.value= example_ntohll((*(uint64_t*)item->data)); + response.message.header.response.cas= example_ntohll(item->cas); release_item(item); if (header->request.opcode == PROTOCOL_BINARY_CMD_INCREMENTQ || @@ -253,6 +252,7 @@ static protocol_binary_response_status version_command_handler(const void *cooki .opcode= PROTOCOL_BINARY_CMD_VERSION, .status= htons(PROTOCOL_BINARY_RESPONSE_SUCCESS), .opaque= header->request.opaque, + .cas= 0, .bodylen= htonl((uint32_t)strlen(versionstring)) } }; @@ -268,7 +268,7 @@ static protocol_binary_response_status concat_command_handler(const void *cookie { protocol_binary_response_status rval= PROTOCOL_BINARY_RESPONSE_SUCCESS; uint16_t keylen= ntohs(header->request.keylen); - uint64_t cas= ntohll(header->request.cas); + uint64_t cas= example_ntohll(header->request.cas); void *key= header + 1; uint32_t vallen= ntohl(header->request.bodylen) - keylen; void *val= (char*)key + keylen; @@ -319,7 +319,7 @@ static protocol_binary_response_status concat_command_handler(const void *cookie .opcode= header->request.opcode, .status= htons(rval), .opaque= header->request.opaque, - .cas= htonll(cas), + .cas= example_htonll(cas), } } }; @@ -359,7 +359,7 @@ static protocol_binary_response_status set_command_handler(const void *cookie, struct item* item= get_item(key, keylen); if (item != NULL) { - if (item->cas != ntohll(header->request.cas)) + if (item->cas != example_ntohll(header->request.cas)) { release_item(item); response.message.header.response.status= htons(PROTOCOL_BINARY_RESPONSE_KEY_EEXISTS); @@ -381,7 +381,7 @@ static protocol_binary_response_status set_command_handler(const void *cookie, /* SETQ shouldn't return a message */ if (header->request.opcode == PROTOCOL_BINARY_CMD_SET) { - response.message.header.response.cas= htonll(item->cas); + response.message.header.response.cas= example_htonll(item->cas); release_item(item); return response_handler(cookie, header, (void*)&response); } @@ -428,7 +428,7 @@ static protocol_binary_response_status add_command_handler(const void *cookie, /* ADDQ shouldn't return a message */ if (header->request.opcode == PROTOCOL_BINARY_CMD_ADD) { - response.message.header.response.cas= htonll(item->cas); + response.message.header.response.cas= example_htonll(item->cas); release_item(item); return response_handler(cookie, header, (void*)&response); } @@ -470,21 +470,26 @@ static protocol_binary_response_status replace_command_handler(const void *cooki struct item* item= get_item(key, keylen); if (item == NULL) + { response.message.header.response.status= htons(PROTOCOL_BINARY_RESPONSE_KEY_ENOENT); - else if (header->request.cas == 0 || ntohll(header->request.cas) == item->cas) + } + else if (header->request.cas == 0 || example_ntohll(header->request.cas) == item->cas) { release_item(item); delete_item(key, keylen); item= create_item(key, keylen, data, datalen, flags, timeout); + if (item == NULL) + { response.message.header.response.status= htons(PROTOCOL_BINARY_RESPONSE_ENOMEM); + } else { put_item(item); /* REPLACEQ shouldn't return a message */ if (header->request.opcode == PROTOCOL_BINARY_CMD_REPLACE) { - response.message.header.response.cas= htonll(item->cas); + response.message.header.response.cas= example_htonll(item->cas); release_item(item); return response_handler(cookie, header, (void*)&response); }