Lines Matching refs:f
45 static int fifolog_write_gzip(struct fifolog_writer *f, time_t now);
66 fifolog_write_assert(const struct fifolog_writer *f) in fifolog_write_assert() argument
69 CHECK_OBJ_NOTNULL(f, FIFOLOG_WRITER_MAGIC); in fifolog_write_assert()
70 assert(f->ff->zs->next_out + f->ff->zs->avail_out == \ in fifolog_write_assert()
71 f->obuf + f->obufsize); in fifolog_write_assert()
81 struct fifolog_writer *f; in fifolog_write_new() local
83 ALLOC_OBJ(f, FIFOLOG_WRITER_MAGIC); in fifolog_write_new()
84 assert(f != NULL); in fifolog_write_new()
85 return (f); in fifolog_write_new()
89 fifolog_write_destroy(struct fifolog_writer *f) in fifolog_write_destroy() argument
92 free(f->obuf); in fifolog_write_destroy()
93 free(f->ibuf); in fifolog_write_destroy()
94 FREE_OBJ(f); in fifolog_write_destroy()
102 fifolog_write_close(struct fifolog_writer *f) in fifolog_write_close() argument
106 CHECK_OBJ_NOTNULL(f, FIFOLOG_WRITER_MAGIC); in fifolog_write_close()
107 fifolog_write_assert(f); in fifolog_write_close()
109 f->cleanup = 1; in fifolog_write_close()
111 fifolog_write_gzip(f, now); in fifolog_write_close()
112 fifolog_write_assert(f); in fifolog_write_close()
113 fifolog_int_close(&f->ff); in fifolog_write_close()
114 free(f->ff); in fifolog_write_close()
118 fifolog_write_open(struct fifolog_writer *f, const char *fn, in fifolog_write_open() argument
126 CHECK_OBJ_NOTNULL(f, FIFOLOG_WRITER_MAGIC); in fifolog_write_open()
132 f->writerate = writerate; in fifolog_write_open()
133 f->syncrate = syncrate; in fifolog_write_open()
134 f->compression = compression; in fifolog_write_open()
137 memset(f->cnt, 0, sizeof f->cnt); in fifolog_write_open()
139 es = fifolog_int_open(&f->ff, fn, 1); in fifolog_write_open()
142 es = fifolog_int_findend(f->ff, &o); in fifolog_write_open()
145 i = fifolog_int_read(f->ff, o); in fifolog_write_open()
148 f->seq = be32dec(f->ff->recbuf); in fifolog_write_open()
149 if (f->seq == 0) { in fifolog_write_open()
151 f->seq = random(); in fifolog_write_open()
153 f->recno = o + 1; in fifolog_write_open()
154 f->seq++; in fifolog_write_open()
157 f->obufsize = f->ff->recsize; in fifolog_write_open()
158 ALLOC(&f->obuf, f->obufsize); in fifolog_write_open()
160 f->ibufsize = f->obufsize * 10; in fifolog_write_open()
161 ALLOC(&f->ibuf, f->ibufsize); in fifolog_write_open()
162 f->ibufptr = 0; in fifolog_write_open()
164 i = deflateInit(f->ff->zs, (int)f->compression); in fifolog_write_open()
167 f->flag |= FIFOLOG_FLG_RESTART; in fifolog_write_open()
168 f->flag |= FIFOLOG_FLG_SYNC; in fifolog_write_open()
169 f->ff->zs->next_out = f->obuf + 9; in fifolog_write_open()
170 f->ff->zs->avail_out = f->obufsize - 9; in fifolog_write_open()
173 f->starttime = now; in fifolog_write_open()
174 f->lastsync = now; in fifolog_write_open()
175 f->lastwrite = now; in fifolog_write_open()
177 fifolog_write_assert(f); in fifolog_write_open()
187 fifolog_write_output(struct fifolog_writer *f, int fl, time_t now) in fifolog_write_output() argument
189 long h, l = f->ff->zs->next_out - f->obuf; in fifolog_write_output()
194 be32enc(f->obuf, f->seq); in fifolog_write_output()
195 f->obuf[h] = f->flag; in fifolog_write_output()
197 if (f->flag & FIFOLOG_FLG_SYNC) { in fifolog_write_output()
198 be32enc(f->obuf + h, now); in fifolog_write_output()
202 assert(l <= (long)f->ff->recsize); /* NB: l includes h */ in fifolog_write_output()
209 if (l < (long)f->ff->recsize && fl == Z_NO_FLUSH) in fifolog_write_output()
212 w = f->ff->recsize - l; in fifolog_write_output()
214 be32enc(f->obuf + f->ff->recsize - 4, w); in fifolog_write_output()
215 f->obuf[4] |= FIFOLOG_FLG_4BYTE; in fifolog_write_output()
217 f->obuf[f->ff->recsize - 1] = (uint8_t)w; in fifolog_write_output()
218 f->obuf[4] |= FIFOLOG_FLG_1BYTE; in fifolog_write_output()
221 f->cnt[FIFOLOG_PT_BYTES_POST] += l - h; in fifolog_write_output()
223 i = pwrite(f->ff->fd, f->obuf, f->ff->recsize, in fifolog_write_output()
224 (f->recno + 1) * f->ff->recsize); in fifolog_write_output()
225 if (i != f->ff->recsize) in fifolog_write_output()
230 f->cnt[FIFOLOG_PT_WRITES]++; in fifolog_write_output()
231 f->cnt[FIFOLOG_PT_RUNTIME] = now - f->starttime; in fifolog_write_output()
233 f->lastwrite = now; in fifolog_write_output()
238 f->seq++; in fifolog_write_output()
239 f->recno++; in fifolog_write_output()
244 if (f->recno >= f->ff->logsize) in fifolog_write_output()
246 f->recno = 1; in fifolog_write_output()
248 f->flag = 0; in fifolog_write_output()
250 memset(f->obuf, 0, f->obufsize); in fifolog_write_output()
251 f->ff->zs->next_out = f->obuf + 5; in fifolog_write_output()
252 f->ff->zs->avail_out = f->obufsize - 5; in fifolog_write_output()
262 fifolog_write_gzip(struct fifolog_writer *f, time_t now) in fifolog_write_gzip() argument
267 if (f->cleanup || now >= (int)(f->lastsync + f->syncrate)) { in fifolog_write_gzip()
268 f->cleanup = 0; in fifolog_write_gzip()
270 f->cnt[FIFOLOG_PT_SYNC]++; in fifolog_write_gzip()
271 } else if (now >= (int)(f->lastwrite + f->writerate)) { in fifolog_write_gzip()
273 f->cnt[FIFOLOG_PT_FLUSH]++; in fifolog_write_gzip()
274 } else if (f->ibufptr == 0) in fifolog_write_gzip()
279 f->ff->zs->avail_in = f->ibufptr; in fifolog_write_gzip()
280 f->ff->zs->next_in = f->ibuf; in fifolog_write_gzip()
283 i = deflate(f->ff->zs, fl); in fifolog_write_gzip()
286 i = fifolog_write_output(f, fl, now); in fifolog_write_gzip()
292 assert(f->ff->zs->avail_in == 0); in fifolog_write_gzip()
293 f->ibufptr = 0; in fifolog_write_gzip()
295 f->flag |= FIFOLOG_FLG_SYNC; in fifolog_write_gzip()
296 f->ff->zs->next_out = f->obuf + 9; in fifolog_write_gzip()
297 f->ff->zs->avail_out = f->obufsize - 9; in fifolog_write_gzip()
298 f->lastsync = now; in fifolog_write_gzip()
299 assert(Z_OK == deflateReset(f->ff->zs)); in fifolog_write_gzip()
310 fifolog_write_poll(struct fifolog_writer *f, time_t now) in fifolog_write_poll() argument
315 return (fifolog_write_gzip(f, now)); in fifolog_write_poll()
324 fifolog_write_record(struct fifolog_writer *f, uint32_t id, time_t now, in fifolog_write_record() argument
331 fifolog_write_assert(f); in fifolog_write_record()
349 if (now != f->last) in fifolog_write_record()
363 if (bufl + len + f->ibufptr > f->ibufsize) in fifolog_write_record()
366 memcpy(f->ibuf + f->ibufptr, buf, bufl); in fifolog_write_record()
367 f->ibufptr += bufl; in fifolog_write_record()
368 memcpy(f->ibuf + f->ibufptr, p, len); in fifolog_write_record()
369 f->ibufptr += len; in fifolog_write_record()
370 f->cnt[FIFOLOG_PT_BYTES_PRE] += bufl + len; in fifolog_write_record()
373 f->last = now; in fifolog_write_record()
384 fifolog_write_record_poll(struct fifolog_writer *f, uint32_t id, time_t now, in fifolog_write_record_poll() argument
393 fifolog_write_assert(f); in fifolog_write_record_poll()
399 if (!fifolog_write_record(f, id, now, ptr, len)) { in fifolog_write_record_poll()
400 if (fifolog_write_gzip(f, now) < 0) in fifolog_write_record_poll()
403 if (!fifolog_write_record(f, id, now, ptr, len)) in fifolog_write_record_poll()
411 while (!fifolog_write_record(f, id, now, p, l)) in fifolog_write_record_poll()
412 if (fifolog_write_gzip(f, now) < 0) in fifolog_write_record_poll()
416 if (fifolog_write_gzip(f, now) < 0) in fifolog_write_record_poll()
418 fifolog_write_assert(f); in fifolog_write_record_poll()