diff options
author | Johannes Schlüter <johannes@php.net> | 2009-02-16 17:26:43 +0000 |
---|---|---|
committer | Johannes Schlüter <johannes@php.net> | 2009-02-16 17:26:43 +0000 |
commit | ebef020eccf2509ea54a7955730b9842ff9500f4 (patch) | |
tree | f5aa966b74c92104b36d2b40fe78eeb9ea9b8110 /ext/mysqlnd/mysqlnd.c | |
parent | 874d14b36f3064f17554a6dadd558b8c30136246 (diff) | |
download | php-git-ebef020eccf2509ea54a7955730b9842ff9500f4.tar.gz |
- MFH: Improve mysqlnd's internal method registration
Diffstat (limited to 'ext/mysqlnd/mysqlnd.c')
-rw-r--r-- | ext/mysqlnd/mysqlnd.c | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index c32c5ca29a..0231cbf14e 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -68,19 +68,7 @@ static zend_bool mysqlnd_library_initted = FALSE; static enum_func_status mysqlnd_send_close(MYSQLND * conn TSRMLS_DC); - -/* {{{ mysqlnd_library_init */ -void mysqlnd_library_init(TSRMLS_D) -{ - if (mysqlnd_library_initted == FALSE) { - mysqlnd_library_initted = TRUE; - _mysqlnd_init_ps_subsystem(); - /* Should be calloc, as mnd_calloc will reference LOCK_access*/ - mysqlnd_stats_init(&mysqlnd_global_stats); - } -} -/* }}} */ - +static struct st_mysqlnd_conn_methods *mysqlnd_conn_methods; /* {{{ mysqlnd_library_end */ void mysqlnd_library_end(TSRMLS_D) @@ -2125,7 +2113,6 @@ MYSQLND_METHOD(mysqlnd_conn, get_connection_stats)(const MYSQLND * const conn, MYSQLND_STMT * _mysqlnd_stmt_init(MYSQLND * const conn TSRMLS_DC); - MYSQLND_CLASS_METHODS_START(mysqlnd_conn) MYSQLND_METHOD(mysqlnd_conn, escape_string), MYSQLND_METHOD(mysqlnd_conn, set_charset), @@ -2196,7 +2183,7 @@ PHPAPI MYSQLND *_mysqlnd_init(zend_bool persistent TSRMLS_DC) SET_ERROR_AFF_ROWS(ret); ret->persistent = persistent; - ret->m = & mysqlnd_mysqlnd_conn_methods; + ret->m = mysqlnd_conn_methods; ret->m->get_reference(ret TSRMLS_CC); #ifdef MYSQLND_THREADED @@ -2212,6 +2199,32 @@ PHPAPI MYSQLND *_mysqlnd_init(zend_bool persistent TSRMLS_DC) } /* }}} */ +/* {{{ mysqlnd_library_init */ +void mysqlnd_library_init(TSRMLS_D) +{ + if (mysqlnd_library_initted == FALSE) { + mysqlnd_library_initted = TRUE; + mysqlnd_conn_methods = &MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_conn); + _mysqlnd_init_ps_subsystem(); + /* Should be calloc, as mnd_calloc will reference LOCK_access*/ + mysqlnd_stats_init(&mysqlnd_global_stats); + } +} +/* }}} */ + +/* {{{ mysqlnd_conn_get_methods */ +PHPAPI struct st_mysqlnd_conn_methods * mysqlnd_conn_get_methods() +{ + return mysqlnd_conn_methods; +} +/* }}} */ + +/* {{{ mysqlnd_conn_set_methods */ +PHPAPI void mysqlnd_conn_set_methods(struct st_mysqlnd_conn_methods *methods) +{ + mysqlnd_conn_methods = methods; +} +/* }}} */ /* * Local variables: |