diff options
author | Andrey Hristov <andrey@php.net> | 2010-12-28 15:16:21 +0000 |
---|---|---|
committer | Andrey Hristov <andrey@php.net> | 2010-12-28 15:16:21 +0000 |
commit | cfac5f5b674a038a35043018145bc61584695fdb (patch) | |
tree | 88d0db8340a1ccc42800ee93da48732d5df73c6b /ext/mysqlnd/mysqlnd.c | |
parent | 874954ed97e0328adf57470230f7f16552ba225c (diff) | |
download | php-git-cfac5f5b674a038a35043018145bc61584695fdb.tar.gz |
extending the API interface - plugins can register
themselves with a structure and can be searched.
Every plugin can have statistics and they are shown
under the statistics of mysqlnd in MINFO.
Diffstat (limited to 'ext/mysqlnd/mysqlnd.c')
-rw-r--r-- | ext/mysqlnd/mysqlnd.c | 51 |
1 files changed, 33 insertions, 18 deletions
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index 88a8548ecc..56c67d56d3 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -66,10 +66,14 @@ static zend_bool mysqlnd_library_initted = FALSE; static struct st_mysqlnd_conn_methods *mysqlnd_conn_methods; +static struct st_mysqlnd_plugin_core mysqlnd_plugin_core; + + /* {{{ mysqlnd_library_end */ PHPAPI void mysqlnd_library_end(TSRMLS_D) { if (mysqlnd_library_initted == TRUE) { + mysqlnd_plugin_subsystem_end(TSRMLS_C); mysqlnd_stats_end(mysqlnd_global_stats); mysqlnd_global_stats = NULL; mysqlnd_library_initted = FALSE; @@ -2378,10 +2382,18 @@ PHPAPI void mysqlnd_library_init(TSRMLS_D) _mysqlnd_init_ps_subsystem(); /* Should be calloc, as mnd_calloc will reference LOCK_access*/ mysqlnd_stats_init(&mysqlnd_global_stats, STAT_LAST); + mysqlnd_plugin_subsystem_init(TSRMLS_C); + { + mysqlnd_plugin_core.plugin_header.plugin_stats.values = mysqlnd_global_stats; + mysqlnd_plugin_register_ex((struct st_mysqlnd_plugin_header *) &mysqlnd_plugin_core TSRMLS_CC); + } + mysqlnd_example_plugin_register(TSRMLS_C); + mysqlnd_debug_trace_plugin_register(TSRMLS_C); } } /* }}} */ + /* {{{ mysqlnd_conn_get_methods */ PHPAPI struct st_mysqlnd_conn_methods * mysqlnd_conn_get_methods() { @@ -2397,24 +2409,6 @@ PHPAPI void mysqlnd_conn_set_methods(struct st_mysqlnd_conn_methods *methods) /* }}} */ -static unsigned int mysqlnd_plugins_counter = 0; - -/* {{{ mysqlnd_plugin_register */ -PHPAPI unsigned int mysqlnd_plugin_register() -{ - return mysqlnd_plugins_counter++; -} -/* }}} */ - - -/* {{{ mysqlnd_plugin_count */ -PHPAPI unsigned int mysqlnd_plugin_count() -{ - return mysqlnd_plugins_counter; -} -/* }}} */ - - /* {{{ _mysqlnd_plugin_get_plugin_connection_data */ PHPAPI void ** _mysqlnd_plugin_get_plugin_connection_data(const MYSQLND * conn, unsigned int plugin_id TSRMLS_DC) { @@ -2427,6 +2421,27 @@ PHPAPI void ** _mysqlnd_plugin_get_plugin_connection_data(const MYSQLND * conn, } /* }}} */ + +static struct st_mysqlnd_plugin_core mysqlnd_plugin_core = +{ + { + MYSQLND_PLUGIN_API_VERSION, + "mysqlnd", + MYSQLND_VERSION_ID, + MYSQLND_VERSION, + "PHP License 3.01", + "Andrey Hristov <andrey@mysql.com>, Ulf Wendel <uwendel@mysql.com>, Georg Richter <georg@mysql.com>", + { + NULL, /* will be filled later */ + mysqlnd_stats_values_names, + }, + { + NULL /* plugin shutdown */ + } + } +}; + + /* * Local variables: * tab-width: 4 |