memcache/request.c
author Tero Marttila <terom@fixme.fi>
Thu, 28 Aug 2008 03:14:07 +0300
changeset 47 a5c09677ca6f
parent 46 8a832c0e01ee
child 48 1c67f512779b
permissions -rw-r--r--
add the coro_test.c file, and update .hgignore a bit
40
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
#include <stdlib.h>
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
#include <assert.h>
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
#include "request.h"
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
#include "memcache.h"
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
#include "../common.h"
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     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
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    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
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
    
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
    // allocate it
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
    if ((req = calloc(1, sizeof(*req))) == NULL)
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
        ERROR("calloc");
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
    
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    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
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    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
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    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
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
        ERROR("malloc key buf");
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    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;
46
8a832c0e01ee bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    50
8a832c0e01ee bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    51
        // set offset to zero
8a832c0e01ee bugfixed, enum->string mappings, test does requests
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    52
        req->buf.offset = 0;
44
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    53
    }
40
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
41
540737bf6bac sending requests, and partial support for receiving -- incomplete, not tested
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    55
    // store the other data
40
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
    req->mc = mc;
41
540737bf6bac sending requests, and partial support for receiving -- incomplete, not tested
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    57
    req->cmd_type = cmd_type;
40
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
    req->cb_arg = cb_arg;
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
    // success
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
    return req;
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
error:
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
    if (req) {
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
        free(req->key.buf);
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
        free(req);
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
    }
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
    return NULL;
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
}
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
44
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    72
// accessors
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    73
enum memcache_req_state memcache_req_state (struct memcache_req *req) {
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    74
    return req->state;
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    75
}
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
enum memcache_command memcache_req_cmd (struct memcache_req *req) {
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    78
    return req->cmd_type;
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    79
}
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
enum memcache_reply memcache_req_reply (struct memcache_req *req) {
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    82
    return req->reply_type;
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    83
}
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
const struct memcache_key *keymemcache_req_key (struct memcache_req *req) {
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    86
    return &req->key;
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    87
}
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
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
    90
    return req->have_obj ? &req->obj : NULL;
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    91
}
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
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
    94
    return req->have_buf ? &req->buf : NULL;
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    95
}
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
// events
42
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
    98
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
    99
    req->mc->cb_fn(req, req->cb_arg);
40
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
}
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101
42
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   102
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
   103
    req->state = MEMCACHE_STATE_QUEUED;
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   104
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   105
//    _memcache_req_notify(req);
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   106
}
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
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
   109
    req->state = MEMCACHE_STATE_SEND;
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   110
    
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   111
//    _memcache_req_notify(req);
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   112
}
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   113
44
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   114
void memcache_req_recv (struct memcache_req *req, enum memcache_reply reply_type) {
42
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   115
    req->state = MEMCACHE_STATE_REPLY;
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   116
    req->reply_type = reply_type;
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   117
44
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   118
    // we must surely have a valid obj now
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   119
    req->have_obj = 1;
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   120
42
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   121
    _memcache_req_notify(req);
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   122
}
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   123
43
e5b714190dee the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents: 42
diff changeset
   124
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
   125
    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
   126
e5b714190dee the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents: 42
diff changeset
   127
    req->state = MEMCACHE_STATE_REPLY_DATA;
44
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   128
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   129
    // we must surely have a valid buf now
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   130
    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
   131
    
e5b714190dee the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents: 42
diff changeset
   132
    _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
   133
}
e5b714190dee the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents: 42
diff changeset
   134
42
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   135
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
   136
    // 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
   137
    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
   138
    
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   139
    // are we supposed to have data?
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   140
    if (req->buf.data) {
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   141
        // make sure we really have the full data, if applicable
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   142
        assert(req->buf.offset == req->buf.len);
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   143
        
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   144
        // yes...
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   145
        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
   146
44
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   147
        // have data
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   148
        req->state = MEMCACHE_STATE_DATA_DONE;
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   149
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   150
    } else {
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   151
        // no data
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   152
        req->state = MEMCACHE_STATE_DONE;
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   153
    }
42
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   154
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   155
    // forget the connection
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   156
    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
   157
    
44
03a7e064f833 stub functions and documentation
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   158
    _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
   159
}
42
0e503189af2f more reply-receiving code, but still incomplete
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   160
43
e5b714190dee the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents: 42
diff changeset
   161
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
   162
    // 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
   163
    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
   164
e5b714190dee the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents: 42
diff changeset
   165
    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
   166
e5b714190dee the request/reply code should be complete now, but still needs testing
Tero Marttila <terom@fixme.fi>
parents: 42
diff changeset
   167
    _memcache_req_notify(req);
40
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   168
}
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   169
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   170
void memcache_req_free (struct memcache_req *req) {
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   171
    // must be unused
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   172
    assert(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
   173
    assert(req->state == MEMCACHE_STATE_INVALID || req->state == MEMCACHE_STATE_ERROR || req->state == MEMCACHE_STATE_DONE || req->state == MEMCACHE_STATE_DATA_DONE);
40
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   174
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   175
    free(req->key.buf);
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   176
    free(req);
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   177
}
9cecd22e643a *queuing, and add missing file
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   178