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

Reply via email to