memcache/memcache.c
changeset 44 03a7e064f833
parent 41 540737bf6bac
child 46 8a832c0e01ee
equal deleted inserted replaced
43:e5b714190dee 44:03a7e064f833
    48 struct memcache_server *memcache_choose_server (struct memcache *mc, const struct memcache_key *key) {
    48 struct memcache_server *memcache_choose_server (struct memcache *mc, const struct memcache_key *key) {
    49     // XXX: support multiple servers
    49     // XXX: support multiple servers
    50     return mc->server_list.lh_first;
    50     return mc->server_list.lh_first;
    51 }
    51 }
    52 
    52 
    53 struct memcache_req *memcache_fetch (struct memcache *mc, const struct memcache_key *key, void *cb_arg) {
    53 static struct memcache_req *_memcache_req (struct memcache *mc, enum memcache_command cmd, const struct memcache_key *key, const struct memcache_obj *obj, const struct memcache_buf *buf, void *cb_arg) {
    54     struct memcache_req *req = NULL;
    54     struct memcache_req *req = NULL;
    55     struct memcache_server *server = NULL;
    55     struct memcache_server *server = NULL;
    56     
    56     
    57     // alloc the request
    57     // alloc the request
    58     if ((req = memcache_req_alloc(mc, MEMCACHE_CMD_FETCH_GET, key, cb_arg)) == NULL)
    58     if ((req = memcache_req_alloc(mc, MEMCACHE_CMD_FETCH_GET, key, obj, buf, cb_arg)) == NULL)
    59         ERROR("failed to allocate request");
    59         ERROR("failed to allocate request");
    60 
    60 
    61     // pick a server
    61     // pick a server
    62     if ((server = memcache_choose_server(mc, key)) == NULL)
    62     if ((server = memcache_choose_server(mc, key)) == NULL)
    63         ERROR("failed to find a server to use");
    63         ERROR("failed to find a server to use");
    74         memcache_req_free(req);
    74         memcache_req_free(req);
    75 
    75 
    76     return NULL;
    76     return NULL;
    77 }  
    77 }  
    78 
    78 
       
    79 struct memcache_req *memcache_fetch (struct memcache *mc, const struct memcache_key *key, void *cb_arg) {
       
    80     return _memcache_req(mc, MEMCACHE_CMD_FETCH_GET, key, NULL, NULL, cb_arg);
       
    81 }
       
    82 
       
    83 struct memcache_req *memcache_store (struct memcache *mc, enum memcache_command cmd, const struct memcache_key *key, const struct memcache_obj *obj, const struct memcache_buf *buf, void *cb_arg) {
       
    84     if (
       
    85             (cmd != MEMCACHE_CMD_STORE_SET)
       
    86         &&  (cmd != MEMCACHE_CMD_STORE_ADD)
       
    87         &&  (cmd != MEMCACHE_CMD_STORE_REPLACE)
       
    88         &&  (cmd != MEMCACHE_CMD_STORE_APPEND)
       
    89         &&  (cmd != MEMCACHE_CMD_STORE_PREPEND)
       
    90         &&  (cmd != MEMCACHE_CMD_STORE_CAS)
       
    91     )
       
    92         ERROR("invalid command for store");
       
    93 
       
    94     return _memcache_req(mc, cmd, key, obj, buf, cb_arg);
       
    95 
       
    96 error:
       
    97     return NULL;
       
    98 }
       
    99