void log_proto_text_client_init(LogProtoTextClient *self, LogTransport *transport, const LogProtoClientOptions *options) { log_proto_client_init(&self->super, transport, options); self->super.prepare = log_proto_text_client_prepare; self->super.flush = log_proto_text_client_flush; self->super.post = log_proto_text_client_post; self->super.transport = transport; self->next_state = -1; }
LogProtoClient * log_proto_file_writer_new(LogTransport *transport, const LogProtoClientOptions *options, gint flush_lines, gint fsync) { if (flush_lines == 0) /* the flush-lines option has not been specified, use a default value */ flush_lines = 1; #ifdef IOV_MAX if (flush_lines > IOV_MAX) /* limit the flush_lines according to the current platform */ flush_lines = IOV_MAX; #endif /* allocate the structure with the proper number of items at the end */ LogProtoFileWriter *self = (LogProtoFileWriter *)g_malloc0(sizeof(LogProtoFileWriter) + sizeof(struct iovec)*flush_lines); log_proto_client_init(&self->super, transport, options); self->fd = transport->fd; self->buf_size = flush_lines; self->fsync = fsync; self->super.prepare = log_proto_file_writer_prepare; self->super.post = log_proto_file_writer_post; self->super.flush = log_proto_file_writer_flush; return &self->super; }