2012-11-02 02:08:03 +04:00
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
/***
This file is part of systemd .
Copyright 2014 Zbigniew Jędrzejewski - Szmek
systemd is free software ; you can redistribute it and / or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation ; either version 2.1 of the License , or
( at your option ) any later version .
systemd is distributed in the hope that it will be useful , but
WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
Lesser General Public License for more details .
You should have received a copy of the GNU Lesser General Public License
along with systemd ; If not , see < http : //www.gnu.org/licenses/>.
* * */
# pragma once
# include "sd-event.h"
# include "journal-remote-write.h"
typedef enum {
STATE_LINE = 0 , /* waiting to read, or reading line */
STATE_DATA_START , /* reading binary data header */
STATE_DATA , /* reading binary data */
STATE_DATA_FINISH , /* expecting newline */
STATE_EOF , /* done */
} source_state ;
typedef struct RemoteSource {
2014-06-22 21:36:31 +04:00
char * name ;
2012-11-02 02:08:03 +04:00
int fd ;
char * buf ;
size_t size ;
2014-03-31 06:35:37 +04:00
size_t scanned ;
2012-11-02 02:08:03 +04:00
size_t filled ;
size_t data_size ;
struct iovec_wrapper iovw ;
source_state state ;
dual_timestamp ts ;
sd_event_source * event ;
} RemoteSource ;
static inline int source_non_empty ( RemoteSource * source ) {
assert ( source ) ;
return source - > filled > 0 ;
}
void source_free ( RemoteSource * source ) ;
int process_data ( RemoteSource * source ) ;
2014-03-15 23:58:03 +04:00
int push_data ( RemoteSource * source , const char * data , size_t size ) ;
2012-11-02 02:08:03 +04:00
int process_source ( RemoteSource * source , Writer * writer , bool compress , bool seal ) ;