Skip to content

Commit baa5a7a

Browse files
committed
proto: Get rid of the mixed usage of LogProtoServerOptionsStorage
Signed-off-by: Hofi <hofione@gmail.com>
1 parent 498515e commit baa5a7a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+239
-233
lines changed

lib/cfg-grammar-internal.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ LogSchedulerOptions *last_scheduler_options;
3030
LogParser *last_parser;
3131
FilterExprNode *last_filter_expr;
3232
LogSourceOptions *last_source_options;
33-
LogProtoServerOptions *last_proto_server_options;
33+
LogProtoServerOptionsStorage *last_proto_server_options;
3434
LogProtoClientOptions *last_proto_client_options;
3535
LogReaderOptions *last_reader_options;
3636
LogWriterOptions *last_writer_options;

lib/cfg-grammar-internal.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171

7272
extern LogSourceOptions *last_source_options;
7373
extern LogReaderOptions *last_reader_options;
74-
extern LogProtoServerOptions *last_proto_server_options;
74+
extern LogProtoServerOptionsStorage *last_proto_server_options;
7575
extern LogProtoClientOptions *last_proto_client_options;
7676
extern LogWriterOptions *last_writer_options;
7777
extern FilePermOptions *last_file_perm_options;

lib/cfg-grammar.y

+3-3
Original file line numberDiff line numberDiff line change
@@ -1440,7 +1440,7 @@ source_reader_option
14401440
| KW_LOG_FETCH_LIMIT '(' positive_integer ')' { last_reader_options->fetch_limit = $3; }
14411441
| KW_FORMAT '(' string ')' { last_reader_options->parse_options.format = g_strdup($3); free($3); }
14421442
| { last_source_options = &last_reader_options->super; } source_option
1443-
| { last_proto_server_options = &last_reader_options->proto_options.super; } source_proto_option
1443+
| { last_proto_server_options = &last_reader_options->proto_options; } source_proto_option
14441444
| { last_msg_format_options = &last_reader_options->parse_options; } msg_format_option
14451445
;
14461446

@@ -1459,8 +1459,8 @@ source_proto_option
14591459
"unknown encoding \"%s\"", $3);
14601460
free($3);
14611461
}
1462-
| KW_LOG_MSG_SIZE '(' positive_integer ')' { last_proto_server_options->max_msg_size = $3; }
1463-
| KW_TRIM_LARGE_MESSAGES '(' yesno ')' { last_proto_server_options->trim_large_messages = $3; }
1462+
| KW_LOG_MSG_SIZE '(' positive_integer ')' { last_proto_server_options->super.max_msg_size = $3; }
1463+
| KW_TRIM_LARGE_MESSAGES '(' yesno ')' { last_proto_server_options->super.trim_large_messages = $3; }
14641464
;
14651465

14661466
host_resolve_option

lib/logproto/Makefile.am

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ logproto_sources = \
2727
lib/logproto/logproto-text-client.c \
2828
lib/logproto/logproto-text-server.c \
2929
lib/logproto/logproto-http-server.c \
30-
lib/logproto/logproto-http-scraper-responder.h \
30+
lib/logproto/logproto-http-scraper-responder.c \
3131
lib/logproto/logproto-record-server.c \
3232
lib/logproto/logproto-builtins.c
3333

lib/logproto/logproto-buffered-server.c

+28-28
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ log_proto_buffered_server_convert_from_raw(LogProtoBufferedServer *self, const g
9999
if (avail_in > sizeof(state->raw_buffer_leftover))
100100
{
101101
msg_error("Invalid byte sequence, the remaining raw buffer is larger than the supported leftover size",
102-
evt_tag_str("encoding", self->super.options->encoding),
102+
evt_tag_str("encoding", self->super.options->super.encoding),
103103
evt_tag_int("avail_in", avail_in),
104104
evt_tag_int("leftover_size", sizeof(state->raw_buffer_leftover)));
105105
goto error;
@@ -108,15 +108,15 @@ log_proto_buffered_server_convert_from_raw(LogProtoBufferedServer *self, const g
108108
state->raw_buffer_leftover_size = avail_in;
109109
state->raw_buffer_size -= avail_in;
110110
msg_trace("Leftover characters remained after conversion, delaying message until another chunk arrives",
111-
evt_tag_str("encoding", self->super.options->encoding),
111+
evt_tag_str("encoding", self->super.options->super.encoding),
112112
evt_tag_int("avail_in", avail_in));
113113
goto success;
114114
}
115115
}
116116
else
117117
{
118118
msg_error("Byte sequence too short, cannot convert an individual frame in its entirety",
119-
evt_tag_str("encoding", self->super.options->encoding),
119+
evt_tag_str("encoding", self->super.options->super.encoding),
120120
evt_tag_int("avail_in", avail_in));
121121
goto error;
122122
}
@@ -125,25 +125,25 @@ log_proto_buffered_server_convert_from_raw(LogProtoBufferedServer *self, const g
125125
state->pending_buffer_end = state->buffer_size - avail_out;
126126
/* extend the buffer */
127127

128-
if (state->buffer_size < self->super.options->max_buffer_size)
128+
if (state->buffer_size < self->super.options->super.max_buffer_size)
129129
{
130130
state->buffer_size *= 2;
131-
if (state->buffer_size > self->super.options->max_buffer_size)
132-
state->buffer_size = self->super.options->max_buffer_size;
131+
if (state->buffer_size > self->super.options->super.max_buffer_size)
132+
state->buffer_size = self->super.options->super.max_buffer_size;
133133

134134
self->buffer = g_realloc(self->buffer, state->buffer_size);
135135
}
136136
else
137137
{
138138
msg_error("Incoming byte stream requires a too large conversion buffer, probably invalid character sequence",
139-
evt_tag_str("encoding", self->super.options->encoding),
139+
evt_tag_str("encoding", self->super.options->super.encoding),
140140
evt_tag_mem("buffer", self->buffer, state->pending_buffer_end));
141141
goto error;
142142
}
143143
break;
144144
case EILSEQ:
145145
msg_notice("Invalid byte sequence, skipping character",
146-
evt_tag_str("encoding", self->super.options->encoding),
146+
evt_tag_str("encoding", self->super.options->super.encoding),
147147
evt_tag_printf("char", "0x%02x", *(guchar *) raw_buffer));
148148
raw_buffer++;
149149
avail_in--;
@@ -153,7 +153,7 @@ log_proto_buffered_server_convert_from_raw(LogProtoBufferedServer *self, const g
153153
default:
154154
msg_error("Unknown error while converting input",
155155
evt_tag_error("errno"),
156-
evt_tag_str("encoding", self->super.options->encoding),
156+
evt_tag_str("encoding", self->super.options->super.encoding),
157157
evt_tag_printf("char", "0x%02x", *(guchar *) raw_buffer));
158158
goto error;
159159
}
@@ -191,7 +191,7 @@ log_proto_buffered_server_apply_state(LogProtoBufferedServer *self, PersistEntry
191191

192192
if (!self->buffer)
193193
{
194-
gssize buffer_size = MAX(state->buffer_size, self->super.options->init_buffer_size);
194+
gssize buffer_size = MAX(state->buffer_size, self->super.options->super.init_buffer_size);
195195
self->buffer = g_malloc(buffer_size);
196196
state->buffer_size = buffer_size;
197197
}
@@ -226,7 +226,7 @@ log_proto_buffered_server_apply_state(LogProtoBufferedServer *self, PersistEntry
226226
gssize rc;
227227
guchar *raw_buffer;
228228

229-
if (!self->super.options->encoding)
229+
if (!self->super.options->super.encoding)
230230
{
231231
/* no conversion, we read directly into our buffer */
232232
if (state->raw_buffer_size > state->buffer_size)
@@ -235,20 +235,20 @@ log_proto_buffered_server_apply_state(LogProtoBufferedServer *self, PersistEntry
235235
evt_tag_str("state", persist_name),
236236
evt_tag_int("raw_buffer_size", state->raw_buffer_size),
237237
evt_tag_int("buffer_size", state->buffer_size),
238-
evt_tag_int("init_buffer_size", self->super.options->init_buffer_size));
238+
evt_tag_int("init_buffer_size", self->super.options->super.init_buffer_size));
239239
goto error;
240240
}
241241
raw_buffer = self->buffer;
242242
}
243243
else
244244
{
245-
if (state->raw_buffer_size > self->super.options->max_buffer_size)
245+
if (state->raw_buffer_size > self->super.options->super.max_buffer_size)
246246
{
247247
msg_notice("Invalid LogProtoBufferedServerState.raw_buffer_size, larger than max_buffer_size, restarting from the beginning",
248248
evt_tag_str("state", persist_name),
249249
evt_tag_int("raw_buffer_size", state->raw_buffer_size),
250-
evt_tag_int("init_buffer_size", self->super.options->init_buffer_size),
251-
evt_tag_int("max_buffer_size", self->super.options->max_buffer_size));
250+
evt_tag_int("init_buffer_size", self->super.options->super.init_buffer_size),
251+
evt_tag_int("max_buffer_size", self->super.options->super.max_buffer_size));
252252
goto error;
253253
}
254254
raw_buffer = g_alloca(state->raw_buffer_size);
@@ -263,7 +263,7 @@ log_proto_buffered_server_apply_state(LogProtoBufferedServer *self, PersistEntry
263263
}
264264

265265
state->pending_buffer_end = 0;
266-
if (self->super.options->encoding)
266+
if (self->super.options->super.encoding)
267267
{
268268
if (!log_proto_buffered_server_convert_from_raw(self, raw_buffer, rc))
269269
{
@@ -412,7 +412,7 @@ log_proto_buffered_server_convert_state(LogProtoBufferedServer *self, guint8 per
412412

413413
if (!self->buffer || state->buffer_size < buffer_len)
414414
{
415-
gsize buffer_size = MAX(self->super.options->init_buffer_size, buffer_len);
415+
gsize buffer_size = MAX(self->super.options->super.init_buffer_size, buffer_len);
416416
self->buffer = g_realloc(self->buffer, buffer_size);
417417
}
418418
serialize_archive_free(archive);
@@ -639,11 +639,11 @@ log_proto_buffered_server_get_raw_size_of_buffer(LogProtoBufferedServer *self, c
639639
* which in turn will speed up the reversal of the UTF8 buffer
640640
* size to raw buffer sizes.
641641
*/
642-
self->convert_scale = log_proto_get_char_size_for_fixed_encoding(self->super.options->encoding);
642+
self->convert_scale = log_proto_get_char_size_for_fixed_encoding(self->super.options->super.encoding);
643643
if (self->convert_scale == 0)
644644
{
645645
/* this encoding is not known, do the conversion for real :( */
646-
self->reverse_convert = g_iconv_open(self->super.options->encoding, "utf-8");
646+
self->reverse_convert = g_iconv_open(self->super.options->super.encoding, "utf-8");
647647
}
648648
}
649649

@@ -696,7 +696,7 @@ log_proto_buffered_server_split_buffer(LogProtoBufferedServer *self, LogProtoBuf
696696
duplicate some data */
697697

698698
gsize raw_split_size;
699-
if (self->super.options->encoding)
699+
if (self->super.options->super.encoding)
700700
raw_split_size = log_proto_buffered_server_get_raw_size_of_buffer(self, *buffer_start, buffer_bytes);
701701
else
702702
raw_split_size = buffer_bytes;
@@ -759,7 +759,7 @@ log_proto_buffered_server_fetch_from_buffer(LogProtoBufferedServer *self, const
759759
static inline void
760760
log_proto_buffered_server_allocate_buffer(LogProtoBufferedServer *self, LogProtoBufferedServerState *state)
761761
{
762-
state->buffer_size = self->super.options->init_buffer_size;
762+
state->buffer_size = self->super.options->super.init_buffer_size;
763763
self->buffer = g_malloc(state->buffer_size);
764764
}
765765

@@ -796,9 +796,9 @@ log_proto_buffered_server_fetch_into_buffer(LogProtoBufferedServer *self)
796796
/* if conversion is needed, we first read into an on-stack
797797
* buffer, and then convert it into our internal buffer */
798798

799-
raw_buffer = g_alloca(self->super.options->init_buffer_size + state->raw_buffer_leftover_size);
799+
raw_buffer = g_alloca(self->super.options->super.init_buffer_size + state->raw_buffer_leftover_size);
800800
memcpy(raw_buffer, state->raw_buffer_leftover, state->raw_buffer_leftover_size);
801-
avail = self->super.options->init_buffer_size;
801+
avail = self->super.options->super.init_buffer_size;
802802
}
803803

804804
if (avail == 0)
@@ -1041,10 +1041,10 @@ log_proto_buffered_server_validate_options_method(LogProtoServer *s)
10411041
{
10421042
LogProtoBufferedServer *self = (LogProtoBufferedServer *) s;
10431043

1044-
if (self->super.options->encoding && self->convert == (GIConv) -1)
1044+
if (self->super.options->super.encoding && self->convert == (GIConv) -1)
10451045
{
10461046
msg_error("Unknown character set name specified",
1047-
evt_tag_str("encoding", self->super.options->encoding));
1047+
evt_tag_str("encoding", self->super.options->super.encoding));
10481048
return FALSE;
10491049
}
10501050
return log_proto_server_validate_options_method(s);
@@ -1074,7 +1074,7 @@ log_proto_buffered_server_free_method(LogProtoServer *s)
10741074

10751075
void
10761076
log_proto_buffered_server_init(LogProtoBufferedServer *self, LogTransport *transport,
1077-
const LogProtoServerOptions *options)
1077+
const LogProtoServerOptionsStorage *options)
10781078
{
10791079
log_proto_server_init(&self->super, transport, options);
10801080
self->super.prepare = log_proto_buffered_server_prepare;
@@ -1087,8 +1087,8 @@ log_proto_buffered_server_init(LogProtoBufferedServer *self, LogTransport *trans
10871087
self->reverse_convert = (GIConv) -1;
10881088
self->read_data = log_proto_buffered_server_read_data_method;
10891089
self->io_status = G_IO_STATUS_NORMAL;
1090-
if (options->encoding)
1091-
self->convert = g_iconv_open("utf-8", options->encoding);
1090+
if (options->super.encoding)
1091+
self->convert = g_iconv_open("utf-8", options->super.encoding);
10921092
else
10931093
self->convert = (GIConv) -1;
10941094
self->stream_based = TRUE;

lib/logproto/logproto-buffered-server.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ void log_proto_buffered_server_put_state(LogProtoBufferedServer *self);
122122
/* LogProtoBufferedServer */
123123
gboolean log_proto_buffered_server_validate_options_method(LogProtoServer *s);
124124
void log_proto_buffered_server_init(LogProtoBufferedServer *self, LogTransport *transport,
125-
const LogProtoServerOptions *options);
125+
const LogProtoServerOptionsStorage *options);
126126
void log_proto_buffered_server_free_method(LogProtoServer *s);
127127

128128
LogProtoStatus log_proto_buffered_server_fetch(LogProtoServer *s, const guchar **msg, gsize *msg_len,

lib/logproto/logproto-dgram-server.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ log_proto_dgram_server_fetch_from_buffer(LogProtoBufferedServer *s, const guchar
4949
}
5050

5151
LogProtoServer *
52-
log_proto_dgram_server_new(LogTransport *transport, const LogProtoServerOptions *options)
52+
log_proto_dgram_server_new(LogTransport *transport, const LogProtoServerOptionsStorage *options)
5353
{
5454
LogProtoDGramServer *self = g_new0(LogProtoDGramServer, 1);
5555

lib/logproto/logproto-dgram-server.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@
3232
* This class reads input as datagrams, each datagram is a separate
3333
* message, regardless of embedded EOL/NUL characters.
3434
*/
35-
LogProtoServer *log_proto_dgram_server_new(LogTransport *transport, const LogProtoServerOptions *options);
35+
LogProtoServer *log_proto_dgram_server_new(LogTransport *transport, const LogProtoServerOptionsStorage *options);
3636

3737
#endif

lib/logproto/logproto-framed-server.c

+6-6
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ _ensure_buffer(LogProtoFramedServer *self)
222222
if (G_LIKELY(self->buffer))
223223
return;
224224

225-
self->buffer_size = self->super.options->init_buffer_size;
225+
self->buffer_size = self->super.options->super.init_buffer_size;
226226
self->buffer = g_malloc(self->buffer_size);
227227
}
228228

@@ -257,19 +257,19 @@ _on_frame_extract(LogProtoFramedServer *self, LogProtoStatus *status)
257257

258258
self->state = LPFSS_MESSAGE_EXTRACT;
259259

260-
if (self->frame_len > self->super.options->max_msg_size)
260+
if (self->frame_len > self->super.options->super.max_msg_size)
261261
{
262-
if (self->super.options->trim_large_messages)
262+
if (self->super.options->super.trim_large_messages)
263263
{
264264
msg_debug("Incoming frame larger than log_msg_size(), need to trim.",
265-
evt_tag_int("log_msg_size", self->super.options->max_msg_size),
265+
evt_tag_int("log_msg_size", self->super.options->super.max_msg_size),
266266
evt_tag_int("frame_length", self->frame_len));
267267
self->state = LPFSS_TRIM_MESSAGE_READ;
268268
}
269269
else
270270
{
271271
msg_error("Incoming frame larger than log_msg_size()",
272-
evt_tag_int("log_msg_size", self->super.options->max_msg_size),
272+
evt_tag_int("log_msg_size", self->super.options->super.max_msg_size),
273273
evt_tag_int("frame_length", self->frame_len));
274274
*status = LPS_ERROR;
275275
return LPFSSCTRL_RETURN_WITH_STATUS;
@@ -423,7 +423,7 @@ log_proto_framed_server_free(LogProtoServer *s)
423423
}
424424

425425
LogProtoServer *
426-
log_proto_framed_server_new(LogTransport *transport, const LogProtoServerOptions *options)
426+
log_proto_framed_server_new(LogTransport *transport, const LogProtoServerOptionsStorage *options)
427427
{
428428
LogProtoFramedServer *self = g_new0(LogProtoFramedServer, 1);
429429

lib/logproto/logproto-framed-server.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@
2626

2727
#include "logproto-server.h"
2828

29-
LogProtoServer *log_proto_framed_server_new(LogTransport *transport, const LogProtoServerOptions *options);
29+
LogProtoServer *log_proto_framed_server_new(LogTransport *transport, const LogProtoServerOptionsStorage *options);
3030

3131
#endif

lib/logproto/logproto-http-scraper-responder.c

+11-11
Original file line numberDiff line numberDiff line change
@@ -84,17 +84,18 @@ _check_request_headers(LogProtoHTTPServer *s, gchar *buffer_start, gsize buffer_
8484

8585
void
8686
log_proto_http_scraper_responder_server_init(LogProtoHTTPScraperResponder *self, LogTransport *transport,
87-
const LogProtoServerOptions *options)
87+
const LogProtoServerOptionsStorage *options)
8888
{
89-
log_proto_http_server_init((LogProtoHTTPServer *)self, transport, options); //&options->super);
90-
self->options = options;
89+
log_proto_http_server_init((LogProtoHTTPServer *)self, transport,
90+
(LogProtoHTTPServerOptions *)options); //&options->super);
91+
self->options = (const LogProtoHTTPScraperResponderOptions *)options;
9192
self->super.request_header_checker = _check_request_headers;
9293
self->super.response_body_composer = _compose_response_body;
9394
}
9495

9596
LogProtoServer *
9697
log_proto_http_scraper_responder_server_new(LogTransport *transport,
97-
const LogProtoServerOptions *options)
98+
const LogProtoServerOptionsStorage *options)
9899
{
99100
LogProtoHTTPScraperResponder *self = g_new0(LogProtoHTTPScraperResponder, 1);
100101

@@ -108,23 +109,22 @@ void
108109
log_proto_http_scraper_responder_options_defaults(LogProtoHTTPScraperResponderOptions *options)
109110
{
110111
memset(options, 0, sizeof(*options));
111-
options->stat_type = STT_STAT;
112+
options->super.stat_type = STT_STAT;
112113
}
113114

114115
void
115116
log_proto_http_scraper_responder_options_init(LogProtoHTTPScraperResponderOptions *options,
116117
GlobalConfig *cfg)
117118
{
118-
if (options->initialized)
119+
if (options->super.initialized)
119120
return;
120-
log_proto_server_options_init(&options->super, cfg);
121-
options->initialized = TRUE;
121+
log_proto_server_options_init(&options->super.super->super, cfg);
122+
options->super.initialized = TRUE;
122123
}
123124

124125
void
125126
log_proto_http_scraper_responder_destroy(LogProtoHTTPScraperResponderOptions *options)
126127
{
127-
// if (options->destroy)
128-
// options->destroy(options);
129-
options->initialized = FALSE;
128+
log_proto_server_options_destroy(&options->super.super->super);
129+
options->super.initialized = FALSE;
130130
}

0 commit comments

Comments
 (0)