diff --git a/src/adapter/adapter.c b/src/adapter/adapter.c index b2f8ec44..12874e8a 100644 --- a/src/adapter/adapter.c +++ b/src/adapter/adapter.c @@ -1349,12 +1349,13 @@ neu_adapter_t *neu_adapter_create(neu_adapter_info_t *info, assert(info->plugin_lib_name != NULL); assert(info->name != NULL); + adapter = calloc(1, sizeof(neu_adapter_t)); + adapter->cb_funs = callback_funs; switch (info->type) { case ADAPTER_TYPE_DRIVERX: - adapter = (neu_adapter_t *) neu_adapter_driver_create(); + adapter = (neu_adapter_t *) neu_adapter_driver_create(adapter); break; default: - adapter = calloc(1, sizeof(neu_adapter_t)); break; } @@ -1371,7 +1372,6 @@ neu_adapter_t *neu_adapter_create(neu_adapter_info_t *info, adapter->plugin_info.kind = info->plugin_kind; adapter->manager = manager; adapter->trans_kind = NEURON_TRANS_DATAVAL; - adapter->cb_funs = callback_funs; rv = nng_mtx_alloc(&adapter->nng.mtx); assert(rv == 0); diff --git a/src/adapter/driver/driver.c b/src/adapter/driver/driver.c index 9bd1a0d4..ff8cf330 100644 --- a/src/adapter/driver/driver.c +++ b/src/adapter/driver/driver.c @@ -107,12 +107,12 @@ static int update(neu_adapter_t *adapter, const char *name, neu_dvalue_t value) return 0; } -neu_adapter_driver_t *neu_adapter_driver_create() +neu_adapter_driver_t *neu_adapter_driver_create(neu_adapter_t *adapter) { neu_adapter_driver_t *driver = calloc(1, sizeof(neu_adapter_driver_t)); - // driver->adapter = *adapter; - // free(adapter); + driver->adapter = *adapter; + free(adapter); pthread_mutex_init(&driver->grp_mtx, NULL); driver->cache = neu_driver_cache_new(); diff --git a/src/adapter/driver/driver_internal.h b/src/adapter/driver/driver_internal.h index 306ffa10..9a9087de 100644 --- a/src/adapter/driver/driver_internal.h +++ b/src/adapter/driver/driver_internal.h @@ -23,7 +23,7 @@ #include "adapter.h" #include "core/message.h" -neu_adapter_driver_t *neu_adapter_driver_create(); +neu_adapter_driver_t *neu_adapter_driver_create(neu_adapter_t *adapter); void neu_adapter_driver_destroy(neu_adapter_driver_t *driver); int neu_adapter_driver_start(neu_adapter_driver_t *driver);