From: Andrey Hristov Date: Tue, 24 Nov 2015 09:23:22 +0000 (+0100) Subject: Give the possibility of the client to pass a factory X-Git-Tag: php-7.1.0alpha1~705^2~40^2~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=85e4fcf647372228c38186eaf6ab6dd354da0c2b;p=php Give the possibility of the client to pass a factory --- diff --git a/ext/mysqlnd/mysqlnd_driver.c b/ext/mysqlnd/mysqlnd_driver.c index fe7d3f1d85..fec8a4eb79 100644 --- a/ext/mysqlnd/mysqlnd_driver.c +++ b/ext/mysqlnd/mysqlnd_driver.c @@ -140,8 +140,8 @@ MYSQLND_METHOD(mysqlnd_object_factory, get_connection)(MYSQLND_CLASS_METHODS_TYP mysqlnd_stats_init(&data->stats, STAT_LAST, persistent); - data->protocol_frame_codec = mysqlnd_pfc_init(persistent, data->stats, data->error_info); - data->vio = mysqlnd_vio_init(persistent, data->stats, data->error_info); + data->protocol_frame_codec = mysqlnd_pfc_init(persistent, factory, data->stats, data->error_info); + data->vio = mysqlnd_vio_init(persistent, factory, data->stats, data->error_info); data->payload_decoder_factory = mysqlnd_protocol_payload_decoder_factory_init(data, persistent); data->command_factory = mysqlnd_command_factory_get(); diff --git a/ext/mysqlnd/mysqlnd_protocol_frame_codec.c b/ext/mysqlnd/mysqlnd_protocol_frame_codec.c index a6b03df0c3..a41e4bdd95 100644 --- a/ext/mysqlnd/mysqlnd_protocol_frame_codec.c +++ b/ext/mysqlnd/mysqlnd_protocol_frame_codec.c @@ -473,11 +473,12 @@ MYSQLND_CLASS_METHODS_END; /* {{{ mysqlnd_pfc_init */ PHPAPI MYSQLND_PFC * -mysqlnd_pfc_init(const zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info) +mysqlnd_pfc_init(const zend_bool persistent, MYSQLND_CLASS_METHODS_TYPE(mysqlnd_object_factory) *object_factory, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info) { + MYSQLND_CLASS_METHODS_TYPE(mysqlnd_object_factory) *factory = object_factory? object_factory : &MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory); MYSQLND_PFC * pfc; DBG_ENTER("mysqlnd_pfc_init"); - pfc = MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory).get_protocol_frame_codec(persistent, stats, error_info); + pfc = factory->get_protocol_frame_codec(persistent, stats, error_info); DBG_RETURN(pfc); } /* }}} */ diff --git a/ext/mysqlnd/mysqlnd_protocol_frame_codec.h b/ext/mysqlnd/mysqlnd_protocol_frame_codec.h index 49bb8da9e5..c9e184d16d 100644 --- a/ext/mysqlnd/mysqlnd_protocol_frame_codec.h +++ b/ext/mysqlnd/mysqlnd_protocol_frame_codec.h @@ -20,8 +20,8 @@ #ifndef MYSQLND_PROTOCOL_FRAME_CODEC_H #define MYSQLND_PROTOCOL_FRAME_CODEC_H -PHPAPI MYSQLND_PFC * mysqlnd_pfc_init(const zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); -PHPAPI void mysqlnd_pfc_free(MYSQLND_PFC * const net, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); +PHPAPI MYSQLND_PFC * mysqlnd_pfc_init(const zend_bool persistent, MYSQLND_CLASS_METHODS_TYPE(mysqlnd_object_factory) *object_factory, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); +PHPAPI void mysqlnd_pfc_free(MYSQLND_PFC * const pfc, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); #endif /* MYSQLND_PROTOCOL_FRAME_CODEC_H */ diff --git a/ext/mysqlnd/mysqlnd_vio.c b/ext/mysqlnd/mysqlnd_vio.c index 1d9b00c337..f559ba6c0e 100644 --- a/ext/mysqlnd/mysqlnd_vio.c +++ b/ext/mysqlnd/mysqlnd_vio.c @@ -776,11 +776,12 @@ MYSQLND_CLASS_METHODS_END; /* {{{ mysqlnd_vio_init */ PHPAPI MYSQLND_VIO * -mysqlnd_vio_init(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info) +mysqlnd_vio_init(zend_bool persistent, MYSQLND_CLASS_METHODS_TYPE(mysqlnd_object_factory) *object_factory, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info) { + MYSQLND_CLASS_METHODS_TYPE(mysqlnd_object_factory) *factory = object_factory? object_factory : &MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory); MYSQLND_VIO * vio; DBG_ENTER("mysqlnd_vio_init"); - vio = MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory).get_vio(persistent, stats, error_info); + vio = factory->get_vio(persistent, stats, error_info); DBG_RETURN(vio); } /* }}} */ diff --git a/ext/mysqlnd/mysqlnd_vio.h b/ext/mysqlnd/mysqlnd_vio.h index 4e8333c497..1e2560ee2d 100644 --- a/ext/mysqlnd/mysqlnd_vio.h +++ b/ext/mysqlnd/mysqlnd_vio.h @@ -19,7 +19,7 @@ #ifndef MYSQLND_VIO_H #define MYSQLND_VIO_H -PHPAPI MYSQLND_VIO * mysqlnd_vio_init(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); +PHPAPI MYSQLND_VIO * mysqlnd_vio_init(zend_bool persistent, MYSQLND_CLASS_METHODS_TYPE(mysqlnd_object_factory) *object_factory, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); PHPAPI void mysqlnd_vio_free(MYSQLND_VIO * const vio, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); #endif /* MYSQLND_VIO_H */