File: LimitCondition.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (36 lines) | stat: -rw-r--r-- 820 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php

namespace Wikimedia\WRStats;

/**
 * @since 1.39
 * @newable
 */
class LimitCondition {
	/** @var int The maximum number of events */
	public $limit;
	/** @var float|int The number of seconds over which the number of events may occur */
	public $window;

	/**
	 * @param int|float|string $limit The maximum number of events
	 * @param int|float|string $window The number of seconds over which the
	 *   number of events may occur
	 */
	public function __construct( $limit, $window ) {
		$this->limit = (int)$limit;
		$this->window = +$window;
		if ( $this->window <= 0 ) {
			throw new WRStatsError( 'Condition window must be positive' );
		}
	}

	/**
	 * Get the condition as a number of events per second
	 *
	 * @return float|int
	 */
	public function perSecond() {
		return $this->limit / $this->window;
	}
}