author | Tero Marttila <terom@fixme.fi> |
Fri, 29 Aug 2008 23:31:17 +0300 | |
changeset 48 | 1c67f512779b |
parent 46 | 8a832c0e01ee |
permissions | -rw-r--r-- |
40 | 1 |
|
2 |
#include <stdlib.h> |
|
3 |
#include <assert.h> |
|
4 |
||
5 |
#include "request.h" |
|
6 |
#include "memcache.h" |
|
7 |
#include "../common.h" |
|
8 |
||
44
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
9 |
struct memcache_req *memcache_req_alloc (struct memcache *mc, enum memcache_command cmd_type, const struct memcache_key *key, const struct memcache_obj *obj, const struct memcache_buf *buf, void *cb_arg) { |
40 | 10 |
struct memcache_req *req = NULL; |
44
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
11 |
|
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
12 |
// ensure key is provided |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
13 |
assert(key != NULL); |
40 | 14 |
|
15 |
// allocate it |
|
16 |
if ((req = calloc(1, sizeof(*req))) == NULL) |
|
17 |
ERROR("calloc"); |
|
18 |
||
19 |
// state |
|
41
540737bf6bac
sending requests, and partial support for receiving -- incomplete, not tested
Tero Marttila <terom@fixme.fi>
parents:
40
diff
changeset
|
20 |
req->state = MEMCACHE_STATE_INVALID; |
40 | 21 |
|
46
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
22 |
// key length? |
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
23 |
if (key->len == 0) |
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
24 |
req->key.len = strlen(key->buf); |
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
25 |
else |
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
26 |
req->key.len = key->len; |
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
27 |
|
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
28 |
if (req->key.len == 0) |
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
29 |
ERROR("zero-length key"); |
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
30 |
|
40 | 31 |
// copy the key |
46
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
32 |
if ((req->key.buf = malloc(req->key.len)) == NULL) |
40 | 33 |
ERROR("malloc key buf"); |
34 |
||
46
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
35 |
memcpy(req->key.buf, key->buf, req->key.len); |
44
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
36 |
|
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
37 |
// copy the obj if provided |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
38 |
if (obj) { |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
39 |
memcpy(&req->obj, obj, sizeof(req->obj)); |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
40 |
req->have_obj = 1; |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
41 |
} |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
42 |
|
46
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
43 |
// copy the buf if provided, and reset the offset to zero |
44
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
44 |
if (buf) { |
46
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
45 |
// ensure that it is a valid buffer |
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
46 |
assert(buf->data && buf->len > 0 && buf->offset == buf->len); |
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
47 |
|
44
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
48 |
memcpy(&req->buf, buf, sizeof(req->buf)); |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
49 |
req->have_buf = 1; |
48
1c67f512779b
fix doc tpyos, rename some enums, fix printf format len for non-zero terminated strings (hg status), pass args to memcache_cmd_format_header via memcache_req_*, handle zero-length STORE requests, memcache_req is_buf_ours + free, other function name typos (keymemcache_req_key), fix req state behaviour re *_DATA_* for STORE requests and FETCH/END, better memcache_server connpool events/management, modular memcache_test with a working benchmark. This is a long commit message.
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
50 |
req->is_buf_ours = 0; |
46
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
51 |
|
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
52 |
// set offset to zero |
8a832c0e01ee
bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
53 |
req->buf.offset = 0; |
44
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
54 |
} |
40 | 55 |
|
41
540737bf6bac
sending requests, and partial support for receiving -- incomplete, not tested
Tero Marttila <terom@fixme.fi>
parents:
40
diff
changeset
|
56 |
// store the other data |
40 | 57 |
req->mc = mc; |
41
540737bf6bac
sending requests, and partial support for receiving -- incomplete, not tested
Tero Marttila <terom@fixme.fi>
parents:
40
diff
changeset
|
58 |
req->cmd_type = cmd_type; |
40 | 59 |
req->cb_arg = cb_arg; |
60 |
||
61 |
// success |
|
62 |
return req; |
|
63 |
||
64 |
error: |
|
65 |
if (req) { |
|
66 |
free(req->key.buf); |
|
67 |
free(req); |
|
68 |
} |
|
69 |
||
70 |
return NULL; |
|
71 |
} |
|
72 |
||
44
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
73 |
// accessors |
48
1c67f512779b
fix doc tpyos, rename some enums, fix printf format len for non-zero terminated strings (hg status), pass args to memcache_cmd_format_header via memcache_req_*, handle zero-length STORE requests, memcache_req is_buf_ours + free, other function name typos (keymemcache_req_key), fix req state behaviour re *_DATA_* for STORE requests and FETCH/END, better memcache_server connpool events/management, modular memcache_test with a working benchmark. This is a long commit message.
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
74 |
enum memcache_state memcache_req_state (struct memcache_req *req) { |
44
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
75 |
return req->state; |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
76 |
} |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
77 |
|
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
78 |
enum memcache_command memcache_req_cmd (struct memcache_req *req) { |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
79 |
return req->cmd_type; |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
80 |
} |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
81 |
|
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
82 |
enum memcache_reply memcache_req_reply (struct memcache_req *req) { |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
83 |
return req->reply_type; |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
84 |
} |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
85 |
|
48
1c67f512779b
fix doc tpyos, rename some enums, fix printf format len for non-zero terminated strings (hg status), pass args to memcache_cmd_format_header via memcache_req_*, handle zero-length STORE requests, memcache_req is_buf_ours + free, other function name typos (keymemcache_req_key), fix req state behaviour re *_DATA_* for STORE requests and FETCH/END, better memcache_server connpool events/management, modular memcache_test with a working benchmark. This is a long commit message.
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
86 |
const struct memcache_key *memcache_req_key (struct memcache_req *req) { |
44
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
87 |
return &req->key; |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
88 |
} |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
89 |
|
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
90 |
const struct memcache_obj *memcache_req_obj (struct memcache_req *req) { |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
91 |
return req->have_obj ? &req->obj : NULL; |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
92 |
} |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
93 |
|
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
94 |
const struct memcache_buf *memcache_req_buf (struct memcache_req *req) { |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
95 |
return req->have_buf ? &req->buf : NULL; |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
96 |
} |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
97 |
|
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
98 |
// events |
42
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
99 |
static void _memcache_req_notify (struct memcache_req *req) { |
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
100 |
req->mc->cb_fn(req, req->cb_arg); |
40 | 101 |
} |
102 |
||
42
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
103 |
void memcache_req_queued (struct memcache_req *req) { |
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
104 |
req->state = MEMCACHE_STATE_QUEUED; |
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
105 |
|
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
106 |
// _memcache_req_notify(req); |
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
107 |
} |
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
108 |
|
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
109 |
void memcache_req_send (struct memcache_req *req) { |
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
110 |
req->state = MEMCACHE_STATE_SEND; |
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
111 |
|
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
112 |
// _memcache_req_notify(req); |
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
113 |
} |
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
114 |
|
44
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
115 |
void memcache_req_recv (struct memcache_req *req, enum memcache_reply reply_type) { |
48
1c67f512779b
fix doc tpyos, rename some enums, fix printf format len for non-zero terminated strings (hg status), pass args to memcache_cmd_format_header via memcache_req_*, handle zero-length STORE requests, memcache_req is_buf_ours + free, other function name typos (keymemcache_req_key), fix req state behaviour re *_DATA_* for STORE requests and FETCH/END, better memcache_server connpool events/management, modular memcache_test with a working benchmark. This is a long commit message.
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
116 |
// set state to REPLY_DATA/REPLY based on have_buf/is_buf_ours |
1c67f512779b
fix doc tpyos, rename some enums, fix printf format len for non-zero terminated strings (hg status), pass args to memcache_cmd_format_header via memcache_req_*, handle zero-length STORE requests, memcache_req is_buf_ours + free, other function name typos (keymemcache_req_key), fix req state behaviour re *_DATA_* for STORE requests and FETCH/END, better memcache_server connpool events/management, modular memcache_test with a working benchmark. This is a long commit message.
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
117 |
req->state = (req->have_buf && req->is_buf_ours) ? MEMCACHE_STATE_REPLY_DATA : MEMCACHE_STATE_REPLY; |
42
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
118 |
req->reply_type = reply_type; |
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
119 |
|
44
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
120 |
// we must surely have a valid obj now |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
121 |
req->have_obj = 1; |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
122 |
|
42
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
123 |
_memcache_req_notify(req); |
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
124 |
} |
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
125 |
|
43
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
126 |
void memcache_req_data (struct memcache_req *req) { |
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
127 |
assert(req->state == MEMCACHE_STATE_REPLY || req->state == MEMCACHE_STATE_REPLY_DATA); |
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
128 |
|
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
129 |
req->state = MEMCACHE_STATE_REPLY_DATA; |
44
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
130 |
|
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
131 |
// we must surely have a valid buf now |
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
132 |
req->have_buf = 1; |
43
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
133 |
|
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
134 |
_memcache_req_notify(req); |
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
135 |
} |
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
136 |
|
42
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
137 |
void memcache_req_done (struct memcache_req *req) { |
43
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
138 |
// make sure we are in the REPLY/REPLY_DATA state |
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
139 |
assert(req->state == MEMCACHE_STATE_REPLY || req->state == MEMCACHE_STATE_REPLY_DATA); |
44
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
140 |
|
48
1c67f512779b
fix doc tpyos, rename some enums, fix printf format len for non-zero terminated strings (hg status), pass args to memcache_cmd_format_header via memcache_req_*, handle zero-length STORE requests, memcache_req is_buf_ours + free, other function name typos (keymemcache_req_key), fix req state behaviour re *_DATA_* for STORE requests and FETCH/END, better memcache_server connpool events/management, modular memcache_test with a working benchmark. This is a long commit message.
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
141 |
// set state to DONE_DATA/DONE based on have_buf/is_buf_ours |
1c67f512779b
fix doc tpyos, rename some enums, fix printf format len for non-zero terminated strings (hg status), pass args to memcache_cmd_format_header via memcache_req_*, handle zero-length STORE requests, memcache_req is_buf_ours + free, other function name typos (keymemcache_req_key), fix req state behaviour re *_DATA_* for STORE requests and FETCH/END, better memcache_server connpool events/management, modular memcache_test with a working benchmark. This is a long commit message.
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
142 |
req->state = (req->have_buf && req->is_buf_ours) ? MEMCACHE_STATE_DONE_DATA : MEMCACHE_STATE_DONE; |
42
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
143 |
|
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
144 |
// forget the connection |
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
145 |
req->conn = NULL; |
43
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
146 |
|
44
03a7e064f833
stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
147 |
_memcache_req_notify(req); |
43
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
148 |
} |
42
0e503189af2f
more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents:
41
diff
changeset
|
149 |
|
43
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
150 |
void memcache_req_error (struct memcache_req *req) { |
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
151 |
// forget our connection |
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
152 |
req->conn = NULL; |
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
153 |
|
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
154 |
req->state = MEMCACHE_STATE_ERROR; |
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
155 |
|
e5b714190dee
the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents:
42
diff
changeset
|
156 |
_memcache_req_notify(req); |
40 | 157 |
} |
158 |
||
159 |
void memcache_req_free (struct memcache_req *req) { |
|
160 |
// must be unused |
|
161 |
assert(req->conn == NULL); |
|
48
1c67f512779b
fix doc tpyos, rename some enums, fix printf format len for non-zero terminated strings (hg status), pass args to memcache_cmd_format_header via memcache_req_*, handle zero-length STORE requests, memcache_req is_buf_ours + free, other function name typos (keymemcache_req_key), fix req state behaviour re *_DATA_* for STORE requests and FETCH/END, better memcache_server connpool events/management, modular memcache_test with a working benchmark. This is a long commit message.
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
162 |
assert(req->state == MEMCACHE_STATE_INVALID || req->state == MEMCACHE_STATE_ERROR || req->state == MEMCACHE_STATE_DONE || req->state == MEMCACHE_STATE_DONE_DATA); |
1c67f512779b
fix doc tpyos, rename some enums, fix printf format len for non-zero terminated strings (hg status), pass args to memcache_cmd_format_header via memcache_req_*, handle zero-length STORE requests, memcache_req is_buf_ours + free, other function name typos (keymemcache_req_key), fix req state behaviour re *_DATA_* for STORE requests and FETCH/END, better memcache_server connpool events/management, modular memcache_test with a working benchmark. This is a long commit message.
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
163 |
|
1c67f512779b
fix doc tpyos, rename some enums, fix printf format len for non-zero terminated strings (hg status), pass args to memcache_cmd_format_header via memcache_req_*, handle zero-length STORE requests, memcache_req is_buf_ours + free, other function name typos (keymemcache_req_key), fix req state behaviour re *_DATA_* for STORE requests and FETCH/END, better memcache_server connpool events/management, modular memcache_test with a working benchmark. This is a long commit message.
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
164 |
if (req->have_buf && req->is_buf_ours) |
1c67f512779b
fix doc tpyos, rename some enums, fix printf format len for non-zero terminated strings (hg status), pass args to memcache_cmd_format_header via memcache_req_*, handle zero-length STORE requests, memcache_req is_buf_ours + free, other function name typos (keymemcache_req_key), fix req state behaviour re *_DATA_* for STORE requests and FETCH/END, better memcache_server connpool events/management, modular memcache_test with a working benchmark. This is a long commit message.
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
165 |
free(req->buf.data); |
40 | 166 |
|
167 |
free(req->key.buf); |
|
168 |
free(req); |
|
169 |
} |
|
170 |