andrey Fri, 08 Jan 2010 19:14:06 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=293289
Log: Add the remaining code for statistics triggers Changed paths: U php/php-src/trunk/ext/mysqlnd/mysqlnd_statistics.c U php/php-src/trunk/ext/mysqlnd/mysqlnd_statistics.h U php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_statistics.c =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_statistics.c 2010-01-08 18:52:41 UTC (rev 293288) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_statistics.c 2010-01-08 19:14:06 UTC (rev 293289) @@ -240,7 +240,8 @@ mysqlnd_stats_init(MYSQLND_STATS ** stats) { *stats = calloc(1, sizeof(MYSQLND_STATS)); - (*stats)->handlers = calloc(STAT_LAST, sizeof(mysqlnd_stat_handler)); + (*stats)->triggers = calloc(STAT_LAST, sizeof(mysqlnd_stat_trigger)); + (*stats)->in_trigger = FALSE; #ifdef ZTS (*stats)->LOCK_access = tsrm_mutex_alloc(); #endif @@ -256,13 +257,46 @@ #ifdef ZTS tsrm_mutex_free(stats->LOCK_access); #endif - free(stats->handlers); + free(stats->triggers); /* mnd_free will reference LOCK_access and crash...*/ free(stats); } /* }}} */ +/* {{{ mysqlnd_stats_set_trigger */ +PHPAPI mysqlnd_stat_trigger +mysqlnd_stats_set_trigger(MYSQLND_STATS * const stats, enum_mysqlnd_collected_stats stat, mysqlnd_stat_trigger trigger TSRMLS_DC) +{ + mysqlnd_stat_trigger ret = NULL; + DBG_ENTER("mysqlnd_stats_set_trigger"); + if (stats) { + MYSQLND_STATS_LOCK(stats); + ret = stats->triggers[stat]; + stats->triggers[stat] = trigger; + MYSQLND_STATS_UNLOCK(stats); + } + DBG_RETURN(ret); +} +/* }}} */ + + +/* {{{ mysqlnd_stats_set_handler */ +PHPAPI mysqlnd_stat_trigger +mysqlnd_stats_reset_triggers(MYSQLND_STATS * const stats TSRMLS_DC) +{ + mysqlnd_stat_trigger ret = NULL; + DBG_ENTER("mysqlnd_stats_reset_trigger"); + if (stats) { + MYSQLND_STATS_LOCK(stats); + memset(stats->triggers, 0, STAT_LAST * sizeof(mysqlnd_stat_trigger)); + MYSQLND_STATS_UNLOCK(stats); + } + DBG_RETURN(ret); +} +/* }}} */ + + /* * Local variables: * tab-width: 4 Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_statistics.h =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_statistics.h 2010-01-08 18:52:41 UTC (rev 293288) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_statistics.h 2010-01-08 19:14:06 UTC (rev 293289) @@ -43,10 +43,10 @@ #endif #define MYSQLND_CHECK_AND_CALL_HANDLER(stats, statistic, value) \ - if ((stats)->handlers[(statistic)] && (stats)->in_handler == FALSE) { \ - (stats)->in_handler = TRUE; \ - (stats)->handlers[(statistic)]((stats), (statistic), (value) TSRMLS_CC); \ - (stats)->in_handler = FALSE; \ + if ((stats)->triggers[(statistic)] && (stats)->in_trigger == FALSE) { \ + (stats)->in_trigger = TRUE; \ + (stats)->triggers[(statistic)]((stats), (statistic), (value) TSRMLS_CC); \ + (stats)->in_trigger = FALSE; \ } \ @@ -222,6 +222,8 @@ PHPAPI void mysqlnd_stats_init(MYSQLND_STATS ** stats); PHPAPI void mysqlnd_stats_end(MYSQLND_STATS * stats); +PHPAPI mysqlnd_stat_trigger mysqlnd_stats_set_trigger(MYSQLND_STATS * const stats, enum_mysqlnd_collected_stats stat, mysqlnd_stat_trigger trigger TSRMLS_DC); +PHPAPI mysqlnd_stat_trigger mysqlnd_stats_reset_triggers(MYSQLND_STATS * const stats TSRMLS_DC); #endif /* MYSQLND_STATISTICS_H */ Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h 2010-01-08 18:52:41 UTC (rev 293288) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h 2010-01-08 19:14:06 UTC (rev 293289) @@ -210,13 +210,13 @@ typedef struct st_mysqlnd_stats MYSQLND_STATS; -typedef void (*mysqlnd_stat_handler)(MYSQLND_STATS * stats, enum_mysqlnd_collected_stats stat, int64_t change TSRMLS_DC); +typedef void (*mysqlnd_stat_trigger)(MYSQLND_STATS * stats, enum_mysqlnd_collected_stats stat, int64_t change TSRMLS_DC); struct st_mysqlnd_stats { uint64_t values[STAT_LAST]; - mysqlnd_stat_handler *handlers; - zend_bool in_handler; + mysqlnd_stat_trigger *triggers; + zend_bool in_trigger; #ifdef ZTS MUTEX_T LOCK_access; #endif
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php