Lines Matching refs:r
61 static size_t rioBufferWrite(rio *r, const void *buf, size_t len) { in rioBufferWrite() argument
62 r->io.buffer.ptr = sdscatlen(r->io.buffer.ptr,(char*)buf,len); in rioBufferWrite()
63 r->io.buffer.pos += len; in rioBufferWrite()
68 static size_t rioBufferRead(rio *r, void *buf, size_t len) { in rioBufferRead() argument
69 if (sdslen(r->io.buffer.ptr)-r->io.buffer.pos < len) in rioBufferRead()
71 memcpy(buf,r->io.buffer.ptr+r->io.buffer.pos,len); in rioBufferRead()
72 r->io.buffer.pos += len; in rioBufferRead()
77 static off_t rioBufferTell(rio *r) { in rioBufferTell() argument
78 return r->io.buffer.pos; in rioBufferTell()
83 static int rioBufferFlush(rio *r) { in rioBufferFlush() argument
84 UNUSED(r); in rioBufferFlush()
100 void rioInitWithBuffer(rio *r, sds s) { in rioInitWithBuffer() argument
101 *r = rioBufferIO; in rioInitWithBuffer()
102 r->io.buffer.ptr = s; in rioInitWithBuffer()
103 r->io.buffer.pos = 0; in rioInitWithBuffer()
109 static size_t rioFileWrite(rio *r, const void *buf, size_t len) { in rioFileWrite() argument
112 retval = fwrite(buf,len,1,r->io.file.fp); in rioFileWrite()
113 r->io.file.buffered += len; in rioFileWrite()
115 if (r->io.file.autosync && in rioFileWrite()
116 r->io.file.buffered >= r->io.file.autosync) in rioFileWrite()
118 fflush(r->io.file.fp); in rioFileWrite()
119 aof_fsync(fileno(r->io.file.fp)); in rioFileWrite()
120 r->io.file.buffered = 0; in rioFileWrite()
126 static size_t rioFileRead(rio *r, void *buf, size_t len) { in rioFileRead() argument
127 return fread(buf,len,1,r->io.file.fp); in rioFileRead()
131 static off_t rioFileTell(rio *r) { in rioFileTell() argument
132 return ftello(r->io.file.fp); in rioFileTell()
137 static int rioFileFlush(rio *r) { in rioFileFlush() argument
138 return (fflush(r->io.file.fp) == 0) ? 1 : 0; in rioFileFlush()
153 void rioInitWithFile(rio *r, FILE *fp) { in rioInitWithFile() argument
154 *r = rioFileIO; in rioInitWithFile()
155 r->io.file.fp = fp; in rioInitWithFile()
156 r->io.file.buffered = 0; in rioInitWithFile()
157 r->io.file.autosync = 0; in rioInitWithFile()
169 static size_t rioFdsetWrite(rio *r, const void *buf, size_t len) { in rioFdsetWrite() argument
178 r->io.fdset.buf = sdscatlen(r->io.fdset.buf,buf,len); in rioFdsetWrite()
180 if (sdslen(r->io.fdset.buf) > PROTO_IOBUF_LEN) doflush = 1; in rioFdsetWrite()
184 p = (unsigned char*) r->io.fdset.buf; in rioFdsetWrite()
185 len = sdslen(r->io.fdset.buf); in rioFdsetWrite()
194 for (j = 0; j < r->io.fdset.numfds; j++) { in rioFdsetWrite()
195 if (r->io.fdset.state[j] != 0) { in rioFdsetWrite()
205 retval = write(r->io.fdset.fds[j],p+nwritten,count-nwritten); in rioFdsetWrite()
219 r->io.fdset.state[j] = errno; in rioFdsetWrite()
220 if (r->io.fdset.state[j] == 0) r->io.fdset.state[j] = EIO; in rioFdsetWrite()
223 if (broken == r->io.fdset.numfds) return 0; /* All the FDs in error. */ in rioFdsetWrite()
226 r->io.fdset.pos += count; in rioFdsetWrite()
229 if (doflush) sdsclear(r->io.fdset.buf); in rioFdsetWrite()
234 static size_t rioFdsetRead(rio *r, void *buf, size_t len) { in rioFdsetRead() argument
235 UNUSED(r); in rioFdsetRead()
242 static off_t rioFdsetTell(rio *r) { in rioFdsetTell() argument
243 return r->io.fdset.pos; in rioFdsetTell()
248 static int rioFdsetFlush(rio *r) { in rioFdsetFlush() argument
251 return rioFdsetWrite(r,NULL,0); in rioFdsetFlush()
266 void rioInitWithFdset(rio *r, int *fds, int numfds) { in rioInitWithFdset() argument
269 *r = rioFdsetIO; in rioInitWithFdset()
270 r->io.fdset.fds = zmalloc(sizeof(int)*numfds); in rioInitWithFdset()
271 r->io.fdset.state = zmalloc(sizeof(int)*numfds); in rioInitWithFdset()
272 memcpy(r->io.fdset.fds,fds,sizeof(int)*numfds); in rioInitWithFdset()
273 for (j = 0; j < numfds; j++) r->io.fdset.state[j] = 0; in rioInitWithFdset()
274 r->io.fdset.numfds = numfds; in rioInitWithFdset()
275 r->io.fdset.pos = 0; in rioInitWithFdset()
276 r->io.fdset.buf = sdsempty(); in rioInitWithFdset()
280 void rioFreeFdset(rio *r) { in rioFreeFdset() argument
281 zfree(r->io.fdset.fds); in rioFreeFdset()
282 zfree(r->io.fdset.state); in rioFreeFdset()
283 sdsfree(r->io.fdset.buf); in rioFreeFdset()
290 void rioGenericUpdateChecksum(rio *r, const void *buf, size_t len) { in rioGenericUpdateChecksum() argument
291 r->cksum = crc64(r->cksum,buf,len); in rioGenericUpdateChecksum()
302 void rioSetAutoSync(rio *r, off_t bytes) { in rioSetAutoSync() argument
303 serverAssert(r->read == rioFileIO.read); in rioSetAutoSync()
304 r->io.file.autosync = bytes; in rioSetAutoSync()
313 size_t rioWriteBulkCount(rio *r, char prefix, int count) { in rioWriteBulkCount() argument
321 if (rioWrite(r,cbuf,clen) == 0) return 0; in rioWriteBulkCount()
326 size_t rioWriteBulkString(rio *r, const char *buf, size_t len) { in rioWriteBulkString() argument
329 if ((nwritten = rioWriteBulkCount(r,'$',len)) == 0) return 0; in rioWriteBulkString()
330 if (len > 0 && rioWrite(r,buf,len) == 0) return 0; in rioWriteBulkString()
331 if (rioWrite(r,"\r\n",2) == 0) return 0; in rioWriteBulkString()
336 size_t rioWriteBulkLongLong(rio *r, long long l) { in rioWriteBulkLongLong() argument
341 return rioWriteBulkString(r,lbuf,llen); in rioWriteBulkLongLong()
345 size_t rioWriteBulkDouble(rio *r, double d) { in rioWriteBulkDouble() argument
350 return rioWriteBulkString(r,dbuf,dlen); in rioWriteBulkDouble()