rioBufferWrite函数Redis更新位置

时间:2017-08-07 10:46:21

标签: c redis

当我在Redis中阅读rio.c的代码时,我发现了rioBufferWriterioBufferRead函数的一些令人困惑的问题。为什么两个函数都需要len添加到pos? 我认为只有read操作才能更新pos。我将非常感谢你的回答。

以下是代码:

/* Returns 1 or 0 for success/failure. */
static size_t rioBufferWrite(rio *r, const void *buf, size_t len) {
    r->io.buffer.ptr = sdscatlen(r->io.buffer.ptr,(char*)buf,len);
    r->io.buffer.pos += len;
    return 1;
}

/* Returns 1 or 0 for success/failure. */
static size_t rioBufferRead(rio *r, void *buf, size_t len) {
    if (sdslen(r->io.buffer.ptr)-r->io.buffer.pos < len)
        return 0; /* not enough buffer to return len bytes. */
    memcpy(buf,r->io.buffer.ptr+r->io.buffer.pos,len);
    r->io.buffer.pos += len;
    return 1;
}

0 个答案:

没有答案