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 |