prefix = $prefix; } /** * Normalize a metric key for StatsD * * Replace occurences of '::' with dots and any other non-alphanumeric * characters with underscores. Combine runs of dots or underscores. * Then trim leading or trailing dots or underscores. * * @param string $key * @since 1.26 */ private static function normalizeMetricKey( $key ) { $key = preg_replace( '/[:.]+/', '.', $key ); $key = preg_replace( '/[^a-z0-9.]+/i', '_', $key ); $key = trim( $key, '_.' ); return str_replace( array( '._', '_.' ), '.', $key ); } public function produceStatsdData( $key, $value = 1, $metric = StatsdDataInterface::STATSD_METRIC_COUNT ) { $entity = $this->produceStatsdDataEntity(); if ( $key !== null ) { $key = self::normalizeMetricKey( "{$this->prefix}.{$key}" ); $entity->setKey( $key ); } if ( $value !== null ) { $entity->setValue( $value ); } if ( $metric !== null ) { $entity->setMetric( $metric ); } // Don't bother buffering a counter update with a delta of zero. if ( !( $metric === StatsdDataInterface::STATSD_METRIC_COUNT && !$value ) ) { $this->buffer[] = $entity; } return $entity; } /** * @return StatsdData[] */ public function getBuffer() { return $this->buffer; } }