LogDriver * http_dd_new(GlobalConfig *cfg) { HTTPDestinationDriver *self = g_new0(HTTPDestinationDriver, 1); log_threaded_dest_driver_init_instance(&self->super, cfg); self->super.super.super.super.init = http_dd_init; self->super.super.super.super.deinit = http_dd_deinit; self->super.super.super.super.free_fn = http_dd_free; self->super.super.super.super.generate_persist_name = _format_persist_name; self->super.format_stats_instance = _format_stats_instance; self->super.stats_source = SCS_HTTP; self->super.worker.construct = http_dw_new; curl_global_init(CURL_GLOBAL_ALL); self->ssl_version = CURL_SSLVERSION_DEFAULT; self->peer_verify = TRUE; /* disable batching even if the global batch_lines is specified */ self->super.batch_lines = 0; self->batch_bytes = 0; self->body_prefix = g_string_new(""); self->body_suffix = g_string_new(""); self->delimiter = g_string_new("\n"); self->workers_lock = g_mutex_new(); self->load_balancer = http_load_balancer_new(); curl_version_info_data *curl_info = curl_version_info(CURLVERSION_NOW); if (!self->user_agent) self->user_agent = g_strdup_printf("syslog-ng %s/libcurl %s", SYSLOG_NG_VERSION, curl_info->version); return &self->super.super.super; }
static HTTPLoadBalancer * _construct_load_balancer(void) { HTTPLoadBalancer *lb; lb = http_load_balancer_new(); for (gint i = 0; i < NUM_TARGETS; i++) { gchar url[256]; g_snprintf(url, sizeof(url), "http://localhost:%d", 8000 + i); http_load_balancer_add_target(lb, url); } return lb; }