andrey Fri, 08 Jan 2010 13:47:03 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=293273
Log: add restart_psession and end_psession hooks Changed paths: U php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c U php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.h U php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_net.c U php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h U php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_wireprotocol.c U php/php-src/trunk/ext/mysqlnd/mysqlnd.c U php/php-src/trunk/ext/mysqlnd/mysqlnd.h U php/php-src/trunk/ext/mysqlnd/mysqlnd_net.c U php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h U php/php-src/trunk/ext/mysqlnd/mysqlnd_wireprotocol.c
Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c 2010-01-08 13:26:58 UTC (rev 293272) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c 2010-01-08 13:47:03 UTC (rev 293273) @@ -411,26 +411,43 @@ PHPAPI void _mysqlnd_restart_psession(MYSQLND *conn TSRMLS_DC) { DBG_ENTER("_mysqlnd_restart_psession"); + conn->m->restart_psession(conn TSRMLS_CC); + DBG_VOID_RETURN; +} +/* }}} */ + + +/* {{{ _mysqlnd_end_psession */ +PHPAPI void _mysqlnd_end_psession(MYSQLND *conn TSRMLS_DC) +{ + DBG_ENTER("_mysqlnd_end_psession"); + conn->m->end_psession(conn TSRMLS_CC); + DBG_VOID_RETURN; +} +/* }}} */ + +/* {{{ mysqlnd_conn::restart_psession */ +static enum_func_status +MYSQLND_METHOD(mysqlnd_conn, restart_psession)(MYSQLND * conn TSRMLS_DC) +{ + DBG_ENTER("mysqlnd_conn::restart_psession"); MYSQLND_INC_CONN_STATISTIC(&conn->stats, STAT_CONNECT_REUSED); /* Free here what should not be seen by the next script */ if (conn->last_message) { mnd_pefree(conn->last_message, conn->persistent); conn->last_message = NULL; } - /* - The thd zval cache is always freed on request shutdown, so this has happened already. - Don't touch the old value! Get new reference - */ - DBG_VOID_RETURN; + DBG_RETURN(PASS); } /* }}} */ -/* {{{ _mysqlnd_end_psession */ -PHPAPI void _mysqlnd_end_psession(MYSQLND *conn TSRMLS_DC) +/* {{{ mysqlnd_conn::end_psession */ +static enum_func_status +MYSQLND_METHOD(mysqlnd_conn, end_psession)(MYSQLND * conn TSRMLS_DC) { - DBG_ENTER("_mysqlnd_end_psession"); - DBG_VOID_RETURN; + DBG_ENTER("mysqlnd_conn::end_psession"); + DBG_RETURN(PASS); } /* }}} */ @@ -2081,7 +2098,9 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_conn, set_state), MYSQLND_METHOD(mysqlnd_conn, simple_command), - MYSQLND_METHOD(mysqlnd_conn, simple_command_handle_response) + MYSQLND_METHOD(mysqlnd_conn, simple_command_handle_response), + MYSQLND_METHOD(mysqlnd_conn, restart_psession), + MYSQLND_METHOD(mysqlnd_conn, end_psession) MYSQLND_CLASS_METHODS_END; Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.h =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.h 2010-01-08 13:26:58 UTC (rev 293272) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.h 2010-01-08 13:47:03 UTC (rev 293273) @@ -74,7 +74,10 @@ PHPAPI void ** _mysqlnd_plugin_get_plugin_stmt_data(const MYSQLND_STMT * stmt, unsigned int plugin_id TSRMLS_DC); #define mysqlnd_plugin_get_plugin_stmt_data(s, p_id) _mysqlnd_plugin_get_plugin_stmt_data((s), (p_id) TSRMLS_CC) +PHPAPI void ** _mysqlnd_plugin_get_plugin_protocol_data(const MYSQLND_PROTOCOL * protocol, unsigned int plugin_id TSRMLS_DC); +#define mysqlnd_plugin_get_plugin_protocol_data(p, p_id) _mysqlnd_plugin_get_plugin_protocol_data((p), (p_id) TSRMLS_CC) + PHPAPI struct st_mysqlnd_conn_methods * mysqlnd_conn_get_methods(); PHPAPI void mysqlnd_conn_set_methods(struct st_mysqlnd_conn_methods *methods); Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_net.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_net.c 2010-01-08 13:26:58 UTC (rev 293272) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_net.c 2010-01-08 13:47:03 UTC (rev 293273) @@ -661,7 +661,8 @@ MYSQLND_NET * mysqlnd_net_init(zend_bool persistent TSRMLS_DC) { - MYSQLND_NET * net = mnd_pecalloc(1, sizeof(MYSQLND_NET), persistent); + size_t alloc_size = sizeof(MYSQLND_NET) + mysqlnd_plugin_count() * sizeof(void *); + MYSQLND_NET * net = mnd_pecalloc(1, alloc_size, persistent); DBG_ENTER("mysqlnd_net_init"); DBG_INF_FMT("persistent=%d", persistent); @@ -719,6 +720,20 @@ /* }}} */ +/* {{{ _mysqlnd_plugin_get_plugin_net_data */ +PHPAPI void ** _mysqlnd_plugin_get_plugin_net_data(const MYSQLND_NET * net, unsigned int plugin_id TSRMLS_DC) +{ + DBG_ENTER("_mysqlnd_plugin_get_plugin_net_data"); + DBG_INF_FMT("plugin_id=%u", plugin_id); + if (!net || plugin_id >= mysqlnd_plugin_count()) { + return NULL; + } + DBG_RETURN((void *)((char *)net + sizeof(MYSQLND_NET) + plugin_id * sizeof(void *))); +} +/* }}} */ + + + /* * Local variables: * tab-width: 4 Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h 2010-01-08 13:26:58 UTC (rev 293272) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h 2010-01-08 13:47:03 UTC (rev 293273) @@ -336,6 +336,9 @@ enum_func_status (*simple_command)(MYSQLND *conn, enum php_mysqlnd_server_command command, const char * const arg, size_t arg_len, enum php_mysql_packet_type ok_packet, zend_bool silent, zend_bool ignore_upsert_status TSRMLS_DC); enum_func_status (*simple_command_handle_response)(MYSQLND *conn, enum php_mysql_packet_type ok_packet, zend_bool silent, enum php_mysqlnd_server_command command, zend_bool ignore_upsert_status TSRMLS_DC); + + enum_func_status (*restart_psession)(MYSQLND *conn TSRMLS_DC); + enum_func_status (*end_psession)(MYSQLND *conn TSRMLS_DC); }; Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_wireprotocol.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_wireprotocol.c 2010-01-08 13:26:58 UTC (rev 293272) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_wireprotocol.c 2010-01-08 13:47:03 UTC (rev 293273) @@ -1974,6 +1974,19 @@ /* }}} */ +/* {{{ _mysqlnd_plugin_get_plugin_protocol_data */ +PHPAPI void ** _mysqlnd_plugin_get_plugin_protocol_data(const MYSQLND_PROTOCOL * protocol, unsigned int plugin_id TSRMLS_DC) +{ + DBG_ENTER("_mysqlnd_plugin_get_plugin_protocol_data"); + DBG_INF_FMT("plugin_id=%u", plugin_id); + if (!protocol || plugin_id >= mysqlnd_plugin_count()) { + return NULL; + } + DBG_RETURN((void *)((char *)protocol + sizeof(MYSQLND_PROTOCOL) + plugin_id * sizeof(void *))); +} +/* }}} */ + + /* * Local variables: * tab-width: 4 Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd.c =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd.c 2010-01-08 13:26:58 UTC (rev 293272) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd.c 2010-01-08 13:47:03 UTC (rev 293273) @@ -411,26 +411,43 @@ PHPAPI void _mysqlnd_restart_psession(MYSQLND *conn TSRMLS_DC) { DBG_ENTER("_mysqlnd_restart_psession"); + conn->m->restart_psession(conn TSRMLS_CC); + DBG_VOID_RETURN; +} +/* }}} */ + + +/* {{{ _mysqlnd_end_psession */ +PHPAPI void _mysqlnd_end_psession(MYSQLND *conn TSRMLS_DC) +{ + DBG_ENTER("_mysqlnd_end_psession"); + conn->m->end_psession(conn TSRMLS_CC); + DBG_VOID_RETURN; +} +/* }}} */ + +/* {{{ mysqlnd_conn::restart_psession */ +static enum_func_status +MYSQLND_METHOD(mysqlnd_conn, restart_psession)(MYSQLND * conn TSRMLS_DC) +{ + DBG_ENTER("mysqlnd_conn::restart_psession"); MYSQLND_INC_CONN_STATISTIC(&conn->stats, STAT_CONNECT_REUSED); /* Free here what should not be seen by the next script */ if (conn->last_message) { mnd_pefree(conn->last_message, conn->persistent); conn->last_message = NULL; } - /* - The thd zval cache is always freed on request shutdown, so this has happened already. - Don't touch the old value! Get new reference - */ - DBG_VOID_RETURN; + DBG_RETURN(PASS); } /* }}} */ -/* {{{ _mysqlnd_end_psession */ -PHPAPI void _mysqlnd_end_psession(MYSQLND *conn TSRMLS_DC) +/* {{{ mysqlnd_conn::end_psession */ +static enum_func_status +MYSQLND_METHOD(mysqlnd_conn, end_psession)(MYSQLND * conn TSRMLS_DC) { - DBG_ENTER("_mysqlnd_end_psession"); - DBG_VOID_RETURN; + DBG_ENTER("mysqlnd_conn::end_psession"); + DBG_RETURN(PASS); } /* }}} */ @@ -2081,7 +2098,9 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_conn, set_state), MYSQLND_METHOD(mysqlnd_conn, simple_command), - MYSQLND_METHOD(mysqlnd_conn, simple_command_handle_response) + MYSQLND_METHOD(mysqlnd_conn, simple_command_handle_response), + MYSQLND_METHOD(mysqlnd_conn, restart_psession), + MYSQLND_METHOD(mysqlnd_conn, end_psession) MYSQLND_CLASS_METHODS_END; Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd.h =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd.h 2010-01-08 13:26:58 UTC (rev 293272) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd.h 2010-01-08 13:47:03 UTC (rev 293273) @@ -74,7 +74,10 @@ PHPAPI void ** _mysqlnd_plugin_get_plugin_stmt_data(const MYSQLND_STMT * stmt, unsigned int plugin_id TSRMLS_DC); #define mysqlnd_plugin_get_plugin_stmt_data(s, p_id) _mysqlnd_plugin_get_plugin_stmt_data((s), (p_id) TSRMLS_CC) +PHPAPI void ** _mysqlnd_plugin_get_plugin_protocol_data(const MYSQLND_PROTOCOL * protocol, unsigned int plugin_id TSRMLS_DC); +#define mysqlnd_plugin_get_plugin_protocol_data(p, p_id) _mysqlnd_plugin_get_plugin_protocol_data((p), (p_id) TSRMLS_CC) + PHPAPI struct st_mysqlnd_conn_methods * mysqlnd_conn_get_methods(); PHPAPI void mysqlnd_conn_set_methods(struct st_mysqlnd_conn_methods *methods); Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_net.c =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_net.c 2010-01-08 13:26:58 UTC (rev 293272) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_net.c 2010-01-08 13:47:03 UTC (rev 293273) @@ -661,7 +661,8 @@ MYSQLND_NET * mysqlnd_net_init(zend_bool persistent TSRMLS_DC) { - MYSQLND_NET * net = mnd_pecalloc(1, sizeof(MYSQLND_NET), persistent); + size_t alloc_size = sizeof(MYSQLND_NET) + mysqlnd_plugin_count() * sizeof(void *); + MYSQLND_NET * net = mnd_pecalloc(1, alloc_size, persistent); DBG_ENTER("mysqlnd_net_init"); DBG_INF_FMT("persistent=%d", persistent); @@ -719,6 +720,20 @@ /* }}} */ +/* {{{ _mysqlnd_plugin_get_plugin_net_data */ +PHPAPI void ** _mysqlnd_plugin_get_plugin_net_data(const MYSQLND_NET * net, unsigned int plugin_id TSRMLS_DC) +{ + DBG_ENTER("_mysqlnd_plugin_get_plugin_net_data"); + DBG_INF_FMT("plugin_id=%u", plugin_id); + if (!net || plugin_id >= mysqlnd_plugin_count()) { + return NULL; + } + DBG_RETURN((void *)((char *)net + sizeof(MYSQLND_NET) + plugin_id * sizeof(void *))); +} +/* }}} */ + + + /* * Local variables: * tab-width: 4 Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h 2010-01-08 13:26:58 UTC (rev 293272) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h 2010-01-08 13:47:03 UTC (rev 293273) @@ -336,6 +336,9 @@ enum_func_status (*simple_command)(MYSQLND *conn, enum php_mysqlnd_server_command command, const char * const arg, size_t arg_len, enum php_mysql_packet_type ok_packet, zend_bool silent, zend_bool ignore_upsert_status TSRMLS_DC); enum_func_status (*simple_command_handle_response)(MYSQLND *conn, enum php_mysql_packet_type ok_packet, zend_bool silent, enum php_mysqlnd_server_command command, zend_bool ignore_upsert_status TSRMLS_DC); + + enum_func_status (*restart_psession)(MYSQLND *conn TSRMLS_DC); + enum_func_status (*end_psession)(MYSQLND *conn TSRMLS_DC); }; Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_wireprotocol.c =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_wireprotocol.c 2010-01-08 13:26:58 UTC (rev 293272) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_wireprotocol.c 2010-01-08 13:47:03 UTC (rev 293273) @@ -1974,6 +1974,19 @@ /* }}} */ +/* {{{ _mysqlnd_plugin_get_plugin_protocol_data */ +PHPAPI void ** _mysqlnd_plugin_get_plugin_protocol_data(const MYSQLND_PROTOCOL * protocol, unsigned int plugin_id TSRMLS_DC) +{ + DBG_ENTER("_mysqlnd_plugin_get_plugin_protocol_data"); + DBG_INF_FMT("plugin_id=%u", plugin_id); + if (!protocol || plugin_id >= mysqlnd_plugin_count()) { + return NULL; + } + DBG_RETURN((void *)((char *)protocol + sizeof(MYSQLND_PROTOCOL) + plugin_id * sizeof(void *))); +} +/* }}} */ + + /* * Local variables: * tab-width: 4
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php