@@ -124,7 +124,7 @@ _compose_response_body(LogProtoHTTPServer *s)
124
124
static gboolean
125
125
_check_prometheus_request_headers (LogProtoHTTPServer * s , gchar * buffer_start , gsize buffer_bytes )
126
126
{
127
- // TODO: add a generic header pareser to LogProtoHTTPServer and use it here
127
+ // TODO: add a generic header parser to LogProtoHTTPServer and use it here
128
128
gchar * * lines = g_strsplit (buffer_start , "\r\n" , 2 );
129
129
130
130
// First line must be like 'GET /metrics HTTP/1.1\x0d\x0a'
@@ -176,143 +176,166 @@ _log_proto_http_scraper_responder_server_free(LogProtoServer *s)
176
176
177
177
void
178
178
log_proto_http_scraper_responder_server_init (LogProtoHTTPScraperResponder * self , LogTransport * transport ,
179
- const LogProtoHTTPScraperResponderOptionsStorage * options )
179
+ const LogProtoServerOptionsStorage * options )
180
180
{
181
- log_proto_http_server_init ((LogProtoHTTPServer * )self , transport ,
182
- (LogProtoHTTPServerOptionsStorage * )options );
181
+ log_proto_http_server_init ((LogProtoHTTPServer * )self , transport , options );
182
+ self -> super .request_header_checker = _check_request_headers ;
183
+ self -> super .response_body_composer = _compose_response_body ;
184
+
183
185
self -> super .super .super .super .free_fn = _log_proto_http_scraper_responder_server_free ;
184
186
self -> super .super .super .no_multi_read = TRUE;
185
- self -> options = (const LogProtoHTTPScraperResponderOptions * )options ;
186
187
187
- self -> super .request_header_checker = _check_request_headers ;
188
- self -> super .response_body_composer = _compose_response_body ;
188
+ self -> options = (const LogProtoHTTPScraperResponderOptions * )options ;
189
189
}
190
190
191
191
LogProtoServer *
192
192
log_proto_http_scraper_responder_server_new (LogTransport * transport ,
193
- const LogProtoServerOptionsStorage * options )
193
+ const LogProtoServerOptionsStorage * proto_server_options )
194
194
{
195
195
g_mutex_lock (_mutex ());
196
196
197
- LogProtoHTTPScraperResponderOptionsStorage * server_options = (LogProtoHTTPScraperResponderOptionsStorage * )options ;
198
- if (server_options -> super . single_instance && single_instance )
197
+ LogProtoHTTPScraperResponderOptions * options = (LogProtoHTTPScraperResponderOptions * )& proto_server_options -> super ;
198
+ if (options -> single_instance && single_instance )
199
199
{
200
200
msg_trace ("Only one Prometheus scraper responder instance is allowed" );
201
201
g_mutex_unlock (_mutex ());
202
202
return NULL ;
203
203
}
204
204
205
205
LogProtoHTTPScraperResponder * self = g_new0 (LogProtoHTTPScraperResponder , 1 );
206
- if (server_options -> super . single_instance )
206
+ if (options -> single_instance )
207
207
single_instance = self ;
208
- log_proto_http_scraper_responder_server_init (self , transport , server_options );
208
+ log_proto_http_scraper_responder_server_init (self , transport , proto_server_options );
209
209
210
210
g_mutex_unlock (_mutex ());
211
211
return & self -> super .super .super .super ;
212
212
}
213
213
214
214
/*----------------- Options -----------------*/
215
215
216
+ /* NOTE: We do not maintain here the initialized state at all, it is the responsibility of the
217
+ * LogProtoServer/LogProtoServerOptions functions
218
+ */
216
219
void
217
- log_proto_http_scraper_responder_options_defaults (LogProtoHTTPScraperResponderOptionsStorage * options )
220
+ log_proto_http_scraper_responder_options_defaults (LogProtoServerOptionsStorage * proto_server_options )
218
221
{
219
- log_proto_http_server_options_defaults ((LogProtoHTTPServerOptionsStorage * )& options -> storage );
220
- log_proto_http_server_options_set_close_after_send ((LogProtoHTTPServerOptionsStorage * )& options -> storage , TRUE);
222
+ LogProtoHTTPScraperResponderOptions * options = (LogProtoHTTPScraperResponderOptions * ) & proto_server_options -> super ;
223
+
224
+ log_proto_http_server_options_defaults (proto_server_options );
225
+ log_proto_http_server_options_set_close_after_send (proto_server_options , TRUE);
226
+
227
+ proto_server_options -> super .init = log_proto_http_scraper_responder_options_init ;
228
+ proto_server_options -> super .validate = log_proto_http_scraper_responder_options_validate ;
229
+ proto_server_options -> super .destroy = log_proto_http_scraper_responder_options_destroy ;
221
230
222
- options -> super . stat_type = 0 ;
223
- options -> super . scraper_type = 0 ;
224
- options -> super . scrape_freq_limit = -1 ;
231
+ options -> stat_type = 0 ;
232
+ options -> scraper_type = 0 ;
233
+ options -> scrape_freq_limit = -1 ;
225
234
}
226
235
227
236
void
228
- log_proto_http_scraper_responder_options_init (LogProtoHTTPScraperResponderOptionsStorage * options ,
237
+ log_proto_http_scraper_responder_options_init (LogProtoServerOptionsStorage * proto_server_options ,
229
238
GlobalConfig * cfg )
230
239
{
231
- if (options -> super .initialized )
232
- return ;
240
+ LogProtoHTTPScraperResponderOptions * options = (LogProtoHTTPScraperResponderOptions * ) & proto_server_options -> super ;
233
241
234
- log_proto_http_server_options_init (( LogProtoHTTPServerOptionsStorage * ) & options -> storage , cfg );
235
- log_proto_http_server_options_set_close_after_send (( LogProtoHTTPServerOptionsStorage * ) & options -> storage , TRUE);
242
+ log_proto_http_server_options_init (proto_server_options , cfg );
243
+ log_proto_http_server_options_set_close_after_send (proto_server_options , TRUE);
236
244
237
- if (options -> super .stat_type == 0 )
238
- options -> super .stat_type = STT_STAT ;
239
- if (options -> super .scraper_type == 0 )
240
- options -> super .scraper_type = SCT_PROMETHEUS ;
241
- if (options -> super .scrape_freq_limit == -1 )
242
- options -> super .scraper_type = 0 ;
243
-
244
- options -> super .initialized = TRUE;
245
+ if (options -> stat_type == 0 )
246
+ options -> stat_type = STT_STAT ;
247
+ if (options -> scraper_type == 0 )
248
+ options -> scraper_type = SCT_PROMETHEUS ;
249
+ if (options -> scrape_freq_limit == -1 )
250
+ options -> scraper_type = 0 ;
245
251
}
246
252
247
253
void
248
- log_proto_http_scraper_responder_options_destroy (LogProtoHTTPScraperResponderOptionsStorage * options )
254
+ log_proto_http_scraper_responder_options_destroy (LogProtoServerOptionsStorage * proto_server_options )
249
255
{
250
- log_proto_http_server_options_destroy ((LogProtoHTTPServerOptionsStorage * )& options -> storage );
251
- g_free (options -> super .stat_query );
252
- options -> super .initialized = FALSE;
256
+ LogProtoHTTPScraperResponderOptions * options = (LogProtoHTTPScraperResponderOptions * ) & proto_server_options -> super ;
257
+
258
+ log_proto_http_server_options_destroy (proto_server_options );
259
+ g_free (options -> stat_query );
253
260
}
254
261
255
262
gboolean
256
- log_proto_http_scraper_responder_options_validate (LogProtoHTTPScraperResponderOptionsStorage * options )
263
+ log_proto_http_scraper_responder_options_validate (LogProtoServerOptionsStorage * proto_server_options )
257
264
{
258
- if (options -> super .stat_type == STT_STAT || options -> super .stat_type == STT_QUERY )
265
+ return TRUE;
266
+ LogProtoHTTPScraperResponderOptions * options = (LogProtoHTTPScraperResponderOptions * ) & proto_server_options -> super ;
267
+
268
+ if (FALSE == log_proto_http_server_options_validate (proto_server_options ))
269
+ return FALSE;
270
+
271
+ if (options -> stat_type == STT_STAT || options -> stat_type == STT_QUERY )
259
272
{
260
- msg_error ("prometheus-scraper-response(), type must be 'stat' or 'query'" );
273
+ msg_error ("prometheus-stats() stat type must be 'stat' or 'query'" );
261
274
return FALSE;
262
275
}
263
276
264
277
return TRUE;
265
278
}
266
279
267
280
gboolean
268
- log_proto_http_scraper_responder_options_set_scraper_type (LogProtoHTTPScraperResponderOptionsStorage * options ,
281
+ log_proto_http_scraper_responder_options_set_scraper_type (LogProtoServerOptionsStorage * proto_server_options ,
269
282
const gchar * value )
270
283
{
284
+ LogProtoHTTPScraperResponderOptions * options = (LogProtoHTTPScraperResponderOptions * ) & proto_server_options -> super ;
285
+
271
286
if (strcmp (value , "prometheus" ) == 0 )
272
287
{
273
- options -> super . scraper_type = SCT_PROMETHEUS ;
288
+ options -> scraper_type = SCT_PROMETHEUS ;
274
289
return TRUE;
275
290
}
276
291
return FALSE;
277
292
}
278
293
279
294
void
280
295
log_proto_http_scraper_responder_options_set_scrape_freq_limit (
281
- LogProtoHTTPScraperResponderOptionsStorage * options ,
296
+ LogProtoServerOptionsStorage * proto_server_options ,
282
297
gint value )
283
298
{
284
- options -> super .scrape_freq_limit = value ;
299
+ LogProtoHTTPScraperResponderOptions * options = (LogProtoHTTPScraperResponderOptions * ) & proto_server_options -> super ;
300
+
301
+ options -> scrape_freq_limit = value ;
285
302
}
286
303
287
304
void
288
305
log_proto_http_scraper_responder_options_set_single_instance (
289
- LogProtoHTTPScraperResponderOptionsStorage * options ,
306
+ LogProtoServerOptionsStorage * proto_server_options ,
290
307
gboolean value )
291
308
{
292
- options -> super .single_instance = value ;
309
+ LogProtoHTTPScraperResponderOptions * options = (LogProtoHTTPScraperResponderOptions * ) & proto_server_options -> super ;
310
+
311
+ options -> single_instance = value ;
293
312
}
294
313
295
314
gboolean
296
- log_proto_http_scraper_responder_options_set_stat_type (LogProtoHTTPScraperResponderOptionsStorage * options ,
315
+ log_proto_http_scraper_responder_options_set_stat_type (LogProtoServerOptionsStorage * proto_server_options ,
297
316
const gchar * value )
298
317
{
318
+ LogProtoHTTPScraperResponderOptions * options = (LogProtoHTTPScraperResponderOptions * ) & proto_server_options -> super ;
319
+
299
320
if (strcmp (value , "stat" ) == 0 )
300
321
{
301
- options -> super . stat_type = STT_STAT ;
322
+ options -> stat_type = STT_STAT ;
302
323
return TRUE;
303
324
}
304
325
else if (strcmp (value , "query" ) == 0 )
305
326
{
306
- options -> super . stat_type = STT_QUERY ;
327
+ options -> stat_type = STT_QUERY ;
307
328
return TRUE;
308
329
}
309
330
return FALSE;
310
331
}
311
332
312
333
void
313
- log_proto_http_scraper_responder_options_set_stat_query (LogProtoHTTPScraperResponderOptionsStorage * options ,
334
+ log_proto_http_scraper_responder_options_set_stat_query (LogProtoServerOptionsStorage * proto_server_options ,
314
335
const gchar * value )
315
336
{
316
- g_free (options -> super .stat_query );
317
- options -> super .stat_query = g_strdup (value );
337
+ LogProtoHTTPScraperResponderOptions * options = (LogProtoHTTPScraperResponderOptions * ) & proto_server_options -> super ;
338
+
339
+ g_free (options -> stat_query );
340
+ options -> stat_query = g_strdup (value );
318
341
}
0 commit comments