]> granicus.if.org Git - php/commitdiff
Give the possibility of the client to pass a factory
authorAndrey Hristov <andrey@php.net>
Tue, 24 Nov 2015 09:23:22 +0000 (10:23 +0100)
committerAndrey Hristov <andrey@php.net>
Tue, 24 Nov 2015 09:23:44 +0000 (10:23 +0100)
ext/mysqlnd/mysqlnd_driver.c
ext/mysqlnd/mysqlnd_protocol_frame_codec.c
ext/mysqlnd/mysqlnd_protocol_frame_codec.h
ext/mysqlnd/mysqlnd_vio.c
ext/mysqlnd/mysqlnd_vio.h

index fe7d3f1d85d2589f3b04fd065ce64af736132a30..fec8a4eb7948f8b46b2532b76750638da46d9a20 100644 (file)
@@ -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();
 
index a6b03df0c39b51f8037a1eb3a089c7e266bd486e..a41e4bdd952b7ae4eee25e7c286873215b4bba40 100644 (file)
@@ -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);
 }
 /* }}} */
index 49bb8da9e532d0c3b0de99250c134dbe329c0a61..c9e184d16d2d887e685b84c97c0eb7520b9d63b6 100644 (file)
@@ -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 */
 
index 1d9b00c337daea91d02e0bb7c28cd69b26879821..f559ba6c0ede50804fcc8faf7144f9866550985f 100644 (file)
@@ -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);
 }
 /* }}} */
index 4e8333c4979fd7d9a4dfb8af262f587d1b3256a5..1e2560ee2da21cb89243b99dd86b0b25134f219c 100644 (file)
@@ -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 */