MediaWiki  1.34.0
BufferingStatsdDataFactory.php
Go to the documentation of this file.
1 <?php
23 use Liuggio\StatsdClient\Entity\StatsdData;
24 use Liuggio\StatsdClient\Entity\StatsdDataInterface;
25 use Liuggio\StatsdClient\Factory\StatsdDataFactory;
26 
35 class BufferingStatsdDataFactory extends StatsdDataFactory implements IBufferingStatsdDataFactory {
36  protected $buffer = [];
41  protected $enabled = true;
45  private $prefix;
46 
47  public function __construct( $prefix ) {
48  parent::__construct();
49  $this->prefix = $prefix;
50  }
51 
63  private static function normalizeMetricKey( $key ) {
64  $key = preg_replace( '/[:.]+/', '.', $key );
65  $key = preg_replace( '/[^a-z0-9.]+/i', '_', $key );
66  $key = trim( $key, '_.' );
67  return str_replace( [ '._', '_.' ], '.', $key );
68  }
69 
70  public function produceStatsdData(
71  $key, $value = 1, $metric = StatsdDataInterface::STATSD_METRIC_COUNT
72  ) {
73  $entity = $this->produceStatsdDataEntity();
74  if ( !$this->enabled ) {
75  return $entity;
76  }
77  if ( $key !== null ) {
78  $key = self::normalizeMetricKey( "{$this->prefix}.{$key}" );
79  $entity->setKey( $key );
80  }
81  if ( $value !== null ) {
82  $entity->setValue( $value );
83  }
84  if ( $metric !== null ) {
85  $entity->setMetric( $metric );
86  }
87  // Don't bother buffering a counter update with a delta of zero.
88  if ( !( $metric === StatsdDataInterface::STATSD_METRIC_COUNT && !$value ) ) {
89  $this->buffer[] = $entity;
90  }
91  return $entity;
92  }
93 
94  public function hasData() {
95  return !empty( $this->buffer );
96  }
97 
102  public function getData() {
103  return $this->buffer;
104  }
105 
106  public function clearData() {
107  $this->buffer = [];
108  }
109 
110  public function getDataCount() {
111  return count( $this->buffer );
112  }
113 
114  public function setEnabled( $enabled ) {
115  $this->enabled = $enabled;
116  }
117 }
BufferingStatsdDataFactory\__construct
__construct( $prefix)
Definition: BufferingStatsdDataFactory.php:47
BufferingStatsdDataFactory\hasData
hasData()
Check whether this data factory has any buffered data.
Definition: BufferingStatsdDataFactory.php:94
BufferingStatsdDataFactory\getDataCount
getDataCount()
Return the number of buffered statsd data entries.
Definition: BufferingStatsdDataFactory.php:110
BufferingStatsdDataFactory\$enabled
bool $enabled
Collection enabled?
Definition: BufferingStatsdDataFactory.php:41
BufferingStatsdDataFactory\clearData
clearData()
Clear all buffered data from the factory.
Definition: BufferingStatsdDataFactory.php:106
BufferingStatsdDataFactory\produceStatsdData
produceStatsdData( $key, $value=1, $metric=StatsdDataInterface::STATSD_METRIC_COUNT)
Definition: BufferingStatsdDataFactory.php:70
BufferingStatsdDataFactory
A factory for application metric data.
Definition: BufferingStatsdDataFactory.php:35
BufferingStatsdDataFactory\$buffer
$buffer
Definition: BufferingStatsdDataFactory.php:36
BufferingStatsdDataFactory\$prefix
string $prefix
Definition: BufferingStatsdDataFactory.php:45
BufferingStatsdDataFactory\getData
getData()
Definition: BufferingStatsdDataFactory.php:102
BufferingStatsdDataFactory\setEnabled
setEnabled( $enabled)
Set collection enable status.
Definition: BufferingStatsdDataFactory.php:114
IBufferingStatsdDataFactory
MediaWiki adaptation of StatsdDataFactory that provides buffering functionality.
Definition: IBufferingStatsdDataFactory.php:11
BufferingStatsdDataFactory\normalizeMetricKey
static normalizeMetricKey( $key)
Normalize a metric key for StatsD.
Definition: BufferingStatsdDataFactory.php:63