1176998Sphk/*- 2176998Sphk * Copyright (c) 2005-2008 Poul-Henning Kamp 3176998Sphk * All rights reserved. 4176998Sphk * 5176998Sphk * Redistribution and use in source and binary forms, with or without 6176998Sphk * modification, are permitted provided that the following conditions 7176998Sphk * are met: 8176998Sphk * 1. Redistributions of source code must retain the above copyright 9176998Sphk * notice, this list of conditions and the following disclaimer. 10176998Sphk * 2. Redistributions in binary form must reproduce the above copyright 11176998Sphk * notice, this list of conditions and the following disclaimer in the 12176998Sphk * documentation and/or other materials provided with the distribution. 13176998Sphk * 14176998Sphk * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15176998Sphk * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16176998Sphk * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17176998Sphk * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18176998Sphk * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19176998Sphk * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20176998Sphk * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21176998Sphk * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22176998Sphk * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23176998Sphk * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24176998Sphk * SUCH DAMAGE. 25176998Sphk * 26176998Sphk * $FreeBSD$ 27176998Sphk */ 28176998Sphk 29176998Sphk#define FIFOLOG_PT_BYTES_PRE 0 30176998Sphk#define FIFOLOG_PT_BYTES_POST 1 31176998Sphk#define FIFOLOG_PT_WRITES 2 32176998Sphk#define FIFOLOG_PT_FLUSH 3 33176998Sphk#define FIFOLOG_PT_SYNC 4 34176998Sphk#define FIFOLOG_PT_RUNTIME 5 35176998Sphk#define FIFOLOG_NPOINT 6 36176998Sphk 37176998Sphkstruct fifolog_writer { 38176998Sphk unsigned magic; 39176998Sphk#define FIFOLOG_WRITER_MAGIC 0xf1f0706 40176998Sphk 41176998Sphk struct fifolog_file *ff; 42176998Sphk 43176998Sphk unsigned writerate; 44176998Sphk unsigned syncrate; 45176998Sphk unsigned compression; 46176998Sphk 47176998Sphk int cleanup; 48176998Sphk 49176998Sphk intmax_t cnt[FIFOLOG_NPOINT]; 50176998Sphk 51176998Sphk uint32_t seq; 52176998Sphk off_t recno; 53219095Sphk uint8_t flag; 54176998Sphk time_t last; 55176998Sphk 56219095Sphk ssize_t obufsize; 57216257Sphk u_char *obuf; 58216257Sphk 59219095Sphk ssize_t ibufsize; 60219095Sphk ssize_t ibufptr; 61176998Sphk u_char *ibuf; 62176998Sphk 63176998Sphk time_t starttime; 64176998Sphk time_t lastwrite; 65176998Sphk time_t lastsync; 66176998Sphk}; 67219095Sphk 68219095Sphkstruct fifolog_writer *fifolog_write_new(void); 69219095Sphkconst char *fifolog_write_open(struct fifolog_writer *f, const char *fn, unsigned writerate, unsigned syncrate, unsigned compression); 70219095Sphkint fifolog_write_record(struct fifolog_writer *f, uint32_t id, time_t now, const void *ptr, ssize_t len); 71219095Sphkint fifolog_write_poll(struct fifolog_writer *f, time_t now); 72219095Sphkint fifolog_write_record_poll(struct fifolog_writer *f, uint32_t id, time_t now, const void *ptr, ssize_t len); 73219095Sphkvoid fifolog_write_close(struct fifolog_writer *f); 74219095Sphkvoid fifolog_write_destroy(struct fifolog_writer *f); 75219095Sphkextern const char *fifolog_write_statnames[]; 76