12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- declare(strict_types=1);
- /*
- * This file is part of the Geocoder package.
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @license MIT License
- */
- namespace Geocoder;
- use Geocoder\Query\GeocodeQuery;
- use Geocoder\Query\ReverseQuery;
- use Geocoder\Provider\Provider;
- use Symfony\Component\Stopwatch\Stopwatch;
- /**
- * This Geocoder allows you to profile your API/Database calls.
- *
- * @author Markus Bachmann <markus.bachmann@bachi.biz>
- */
- final class TimedGeocoder implements Geocoder
- {
- use GeocoderTrait;
- /**
- * @var Provider
- */
- private $delegate;
- /**
- * @var Stopwatch
- */
- private $stopwatch;
- public function __construct(Provider $delegate, Stopwatch $stopwatch)
- {
- $this->delegate = $delegate;
- $this->stopwatch = $stopwatch;
- }
- /**
- * {@inheritdoc}
- */
- public function geocodeQuery(GeocodeQuery $query): Collection
- {
- $this->stopwatch->start('geocode', 'geocoder');
- try {
- $result = $this->delegate->geocodeQuery($query);
- } catch (\Throwable $e) {
- $this->stopwatch->stop('geocode');
- throw $e;
- }
- $this->stopwatch->stop('geocode');
- return $result;
- }
- /**
- * {@inheritdoc}
- */
- public function reverseQuery(ReverseQuery $query): Collection
- {
- $this->stopwatch->start('reverse', 'geocoder');
- try {
- $result = $this->delegate->reverseQuery($query);
- } catch (\Throwable $e) {
- $this->stopwatch->stop('reverse');
- throw $e;
- }
- $this->stopwatch->stop('reverse');
- return $result;
- }
- public function __call($method, $args)
- {
- return call_user_func_array([$this->delegate, $method], $args);
- }
- public function getName(): string
- {
- return 'timed_geocoder';
- }
- }
|