diff --git a/aeron-driver/src/main/c/aeron_driver.c b/aeron-driver/src/main/c/aeron_driver.c index 826b380b45..0d05e9273c 100644 --- a/aeron-driver/src/main/c/aeron_driver.c +++ b/aeron-driver/src/main/c/aeron_driver.c @@ -634,12 +634,27 @@ void aeron_driver_context_print_configuration(aeron_driver_context_t *context) { fprintf( fpout, "\n udp_channel_transport_bindings.%s=%s,%p%s", - bindings->meta_info.type, bindings->meta_info.name, - bindings->meta_info.source_symbol, aeron_dlinfo(bindings->meta_info.source_symbol, buffer, sizeof(buffer))); + bindings->meta_info.type, + bindings->meta_info.name, + bindings->meta_info.source_symbol, + aeron_dlinfo(bindings->meta_info.source_symbol, buffer, sizeof(buffer))); bindings = bindings->meta_info.next_binding; } + const aeron_udp_channel_transport_bindings_t *conductor_bindings = context->conductor_udp_channel_transport_bindings; + while (NULL != conductor_bindings) + { + fprintf( + fpout, "\n conductor_udp_channel_transport_bindings.%s=%s,%p%s", + conductor_bindings->meta_info.type, + conductor_bindings->meta_info.name, + conductor_bindings->meta_info.source_symbol, + aeron_dlinfo(conductor_bindings->meta_info.source_symbol, buffer, sizeof(buffer))); + + conductor_bindings = conductor_bindings->meta_info.next_binding; + } + const aeron_udp_channel_interceptor_bindings_t *interceptor_bindings; interceptor_bindings = context->udp_channel_outgoing_interceptor_bindings; diff --git a/aeron-driver/src/main/c/aeron_driver_context.c b/aeron-driver/src/main/c/aeron_driver_context.c index ca8272b013..062194e5cd 100644 --- a/aeron-driver/src/main/c/aeron_driver_context.c +++ b/aeron-driver/src/main/c/aeron_driver_context.c @@ -981,6 +981,14 @@ int aeron_driver_context_init(aeron_driver_context_t **context) return -1; } + if ((_context->conductor_udp_channel_transport_bindings = aeron_udp_channel_transport_bindings_load_media( + AERON_CONFIG_GETENV_OR_DEFAULT( + AERON_CONDUCTOR_UDP_CHANNEL_TRANSPORT_BINDINGS_MEDIA_ENV_VAR, + AERON_UDP_CHANNEL_TRANSPORT_BINDINGS_MEDIA_DEFAULT))) == NULL) + { + return -1; + } + if ((value = getenv(AERON_UDP_CHANNEL_OUTGOING_INTERCEPTORS_ENV_VAR))) { if ((_context->udp_channel_outgoing_interceptor_bindings = aeron_udp_channel_interceptor_bindings_load( diff --git a/aeron-driver/src/main/c/aeron_driver_context.h b/aeron-driver/src/main/c/aeron_driver_context.h index 1bf90e4452..c7936d3221 100644 --- a/aeron-driver/src/main/c/aeron_driver_context.h +++ b/aeron-driver/src/main/c/aeron_driver_context.h @@ -236,6 +236,7 @@ typedef struct aeron_driver_context_stct void *termination_hook_state; aeron_udp_channel_transport_bindings_t *udp_channel_transport_bindings; + aeron_udp_channel_transport_bindings_t *conductor_udp_channel_transport_bindings; aeron_udp_channel_interceptor_bindings_t *udp_channel_outgoing_interceptor_bindings; aeron_udp_channel_interceptor_bindings_t *udp_channel_incoming_interceptor_bindings; diff --git a/aeron-driver/src/main/c/aeron_driver_name_resolver.c b/aeron-driver/src/main/c/aeron_driver_name_resolver.c index 5410e15a6c..38229598ce 100644 --- a/aeron-driver/src/main/c/aeron_driver_name_resolver.c +++ b/aeron-driver/src/main/c/aeron_driver_name_resolver.c @@ -275,7 +275,7 @@ int aeron_driver_name_resolver_init( } } - _driver_resolver->transport_bindings = context->udp_channel_transport_bindings; + _driver_resolver->transport_bindings = context->conductor_udp_channel_transport_bindings; if (aeron_udp_channel_data_paths_init( &_driver_resolver->data_paths, context->udp_channel_outgoing_interceptor_bindings, @@ -377,8 +377,8 @@ int aeron_driver_name_resolver_init( return 0; error_cleanup: - context->udp_channel_transport_bindings->poller_close_func(&_driver_resolver->poller); - context->udp_channel_transport_bindings->close_func(&_driver_resolver->transport); + _driver_resolver->transport_bindings->poller_close_func(&_driver_resolver->poller); + _driver_resolver->transport_bindings->close_func(&_driver_resolver->transport); aeron_udp_channel_data_paths_delete(&_driver_resolver->data_paths); aeron_name_resolver_cache_close(&_driver_resolver->cache); aeron_free(_driver_resolver->saved_bootstrap_neighbor); diff --git a/aeron-driver/src/main/c/aeronmd.h b/aeron-driver/src/main/c/aeronmd.h index ae0d92e6ea..603262917f 100644 --- a/aeron-driver/src/main/c/aeronmd.h +++ b/aeron-driver/src/main/c/aeronmd.h @@ -668,6 +668,11 @@ bool aeron_driver_context_get_rejoin_stream(aeron_driver_context_t *context); */ #define AERON_UDP_CHANNEL_TRANSPORT_BINDINGS_MEDIA_ENV_VAR "AERON_UDP_CHANNEL_TRANSPORT_BINDINGS_MEDIA" +/** + * Bindings for Conductor UDP Channel Transports. + */ +#define AERON_CONDUCTOR_UDP_CHANNEL_TRANSPORT_BINDINGS_MEDIA_ENV_VAR "AERON_CONDUCTOR_UDP_CHANNEL_TRANSPORT_BINDINGS_MEDIA" + typedef struct aeron_udp_channel_transport_bindings_stct aeron_udp_channel_transport_bindings_t; int aeron_driver_context_set_udp_channel_transport_bindings(