diff options
Diffstat (limited to 'lib/public/Diagnostics')
-rw-r--r-- | lib/public/Diagnostics/IEvent.php | 45 | ||||
-rw-r--r-- | lib/public/Diagnostics/IEventLogger.php | 67 | ||||
-rw-r--r-- | lib/public/Diagnostics/IQuery.php | 50 | ||||
-rw-r--r-- | lib/public/Diagnostics/IQueryLogger.php | 57 |
4 files changed, 219 insertions, 0 deletions
diff --git a/lib/public/Diagnostics/IEvent.php b/lib/public/Diagnostics/IEvent.php new file mode 100644 index 00000000000..dd664c4dad5 --- /dev/null +++ b/lib/public/Diagnostics/IEvent.php @@ -0,0 +1,45 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ +namespace OCP\Diagnostics; + +/** + * Interface IEvent + * + * @since 8.0.0 + */ +interface IEvent { + /** + * @return string + * @since 8.0.0 + */ + public function getId(); + + /** + * @return string + * @since 8.0.0 + */ + public function getDescription(); + + /** + * @return float + * @since 8.0.0 + */ + public function getStart(); + + /** + * @return float + * @since 8.0.0 + */ + public function getEnd(); + + /** + * @return float + * @since 8.0.0 + */ + public function getDuration(); +} diff --git a/lib/public/Diagnostics/IEventLogger.php b/lib/public/Diagnostics/IEventLogger.php new file mode 100644 index 00000000000..fc3cb4288d0 --- /dev/null +++ b/lib/public/Diagnostics/IEventLogger.php @@ -0,0 +1,67 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ +namespace OCP\Diagnostics; + +/** + * Interface IEventLogger + * + * @since 8.0.0 + */ +interface IEventLogger { + /** + * Mark the start of an event setting its ID $id and providing event description $description. + * + * @param string $id + * @param string $description + * @since 8.0.0 + */ + public function start($id, $description); + + /** + * Mark the end of an event with specific ID $id, marked by start() method. + * Ending event should store \OCP\Diagnostics\IEvent to + * be returned with getEvents() method. + * + * @param string $id + * @since 8.0.0 + */ + public function end($id); + + /** + * Mark the start and the end of an event with specific ID $id and description $description, + * explicitly marking start and end of the event, represented by $start and $end timestamps. + * Logging event should store \OCP\Diagnostics\IEvent to + * be returned with getEvents() method. + * + * @param string $id + * @param string $description + * @param float $start + * @param float $end + * @since 8.0.0 + */ + public function log($id, $description, $start, $end); + + /** + * This method should return all \OCP\Diagnostics\IEvent objects stored using + * start()/end() or log() methods + * + * @return \OCP\Diagnostics\IEvent[] + * @since 8.0.0 + */ + public function getEvents(); + + /** + * Activate the module for the duration of the request. Deactivated module + * does not create and store \OCP\Diagnostics\IEvent objects. + * Only activated module should create and store objects to be + * returned with getEvents() call. + * + * @since 12.0.0 + */ + public function activate(); +} diff --git a/lib/public/Diagnostics/IQuery.php b/lib/public/Diagnostics/IQuery.php new file mode 100644 index 00000000000..3fe39be27bd --- /dev/null +++ b/lib/public/Diagnostics/IQuery.php @@ -0,0 +1,50 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ +namespace OCP\Diagnostics; + +/** + * Interface IQuery + * + * @since 8.0.0 + */ +interface IQuery { + /** + * @return string + * @since 8.0.0 + */ + public function getSql(); + + /** + * @return array + * @since 8.0.0 + */ + public function getParams(); + + /** + * @return float + * @since 8.0.0 + */ + public function getDuration(); + + /** + * @return float + * @since 11.0.0 + */ + public function getStartTime(); + + /** + * @return array + * @since 11.0.0 + */ + public function getStacktrace(); + /** + * @return array + * @since 12.0.0 + */ + public function getStart(); +} diff --git a/lib/public/Diagnostics/IQueryLogger.php b/lib/public/Diagnostics/IQueryLogger.php new file mode 100644 index 00000000000..07c999023da --- /dev/null +++ b/lib/public/Diagnostics/IQueryLogger.php @@ -0,0 +1,57 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ +namespace OCP\Diagnostics; + +use Doctrine\DBAL\Logging\SQLLogger; + +/** + * Interface IQueryLogger + * + * @since 8.0.0 + */ +interface IQueryLogger extends SQLLogger { + /** + * Mark the start of a query providing query SQL statement, its parameters and types. + * This method should be called as close to the DB as possible and after + * query is finished finalized with stopQuery() method. + * + * @param string $sql + * @param array|null $params + * @param array|null $types + * @since 8.0.0 + */ + public function startQuery($sql, ?array $params = null, ?array $types = null); + + /** + * Mark the end of the current active query. Ending query should store \OCP\Diagnostics\IQuery to + * be returned with getQueries() method. + * + * @return void + * @since 8.0.0 + */ + public function stopQuery(); + + /** + * This method should return all \OCP\Diagnostics\IQuery objects stored using + * startQuery()/stopQuery() methods. + * + * @return \OCP\Diagnostics\IQuery[] + * @since 8.0.0 + */ + public function getQueries(); + + /** + * Activate the module for the duration of the request. Deactivated module + * does not create and store \OCP\Diagnostics\IQuery objects. + * Only activated module should create and store objects to be + * returned with getQueries() call. + * + * @since 12.0.0 + */ + public function activate(); +} |