libfastcommon/src/buffered_file_writer.h

73 lines
1.9 KiB
C

/**
* Copyright (C) 2008 Happy Fish / YuQing
*
* FastDFS may be copied only under the terms of the GNU General
* Public License V3, which may be found in the FastDFS source kit.
* Please visit the FastDFS Home Page http://www.fastken.com/ for more detail.
**/
#ifndef BUFFERED_FILE_WRITER_H
#define BUFFERED_FILE_WRITER_H
#include "common_define.h"
typedef struct
{
int fd;
int buffer_size;
char filename[MAX_PATH_SIZE];
char *buff;
char *current;
char *buff_end;
char *water_mark;
} BufferedFileWriter;
#ifdef __cplusplus
extern "C" {
#endif
/** open buffered file writer
* parameters:
* writer: the writer
* filename: the filename to write
* buffer_size: the buffer size, <= 0 for recommend 64KB
* max_written_once: max written bytes per call, <= 0 for 256
* mode: the file privilege such as 0644
* return: error code, 0 for success, != 0 for errno
*/
int buffered_file_writer_open_ex(BufferedFileWriter *writer,
const char *filename, const int buffer_size,
const int max_written_once, const int mode);
static inline int buffered_file_writer_open(BufferedFileWriter *writer,
const char *filename)
{
const int buffer_size = 0;
const int max_written_once = 0;
const int mode = 0644;
return buffered_file_writer_open_ex(writer, filename,
buffer_size, max_written_once, mode);
}
/** close buffered file writer
* parameters:
* writer: the writer
* return: error code, 0 for success, != 0 for errno
*/
int buffered_file_writer_close(BufferedFileWriter *writer);
int buffered_file_writer_append(BufferedFileWriter *writer,
const char *format, ...);
int buffered_file_writer_append_buff(BufferedFileWriter *writer,
const char *buff, const int len);
int buffered_file_writer_flush(BufferedFileWriter *writer);
#ifdef __cplusplus
}
#endif
#endif