001/*
002 * ============================================================================
003 * Copyright © 2002-2026 by Thomas Thrien.
004 * All Rights Reserved.
005 * ============================================================================
006 *
007 * Licensed to the public under the agreements of the GNU Lesser General Public
008 * License, version 3.0 (the "License"). You may obtain a copy of the License at
009 *
010 *      http://www.gnu.org/licenses/lgpl.html
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
014 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
015 * License for the specific language governing permissions and limitations
016 * under the License.
017 */
018
019package org.tquadrat.foundation.perflog;
020
021import static org.apiguardian.api.API.Status.STABLE;
022
023import java.util.Optional;
024
025import org.apiguardian.api.API;
026import org.tquadrat.foundation.annotation.ClassVersion;
027import org.tquadrat.foundation.perflog.internal.PerformanceReportImpl;
028
029/**
030 *  <p>{@summary The container for report data going to the
031 *  {@link org.tquadrat.foundation.perflog.PerfLogMBean}.}</p>
032 *
033 *  @extauthor Thomas Thrien - thomas.thrien@tquadrat.org
034 *  @version $Id: PerformanceReport.java 1216 2026-05-02 11:16:24Z tquadrat $
035 *  @since 0.25.0
036 *
037 *  @UMLGraph.link
038 */
039@ClassVersion( sourceVersion = "$Id: PerformanceReport.java 1216 2026-05-02 11:16:24Z tquadrat $" )
040@API( status = STABLE, since = "0.25.0" )
041public sealed interface PerformanceReport
042    permits PerformanceReportImpl
043{
044        /*-----------*\
045    ====** Constants **========================================================
046        \*-----------*/
047
048        /*---------*\
049    ====** Methods **==========================================================
050        \*---------*/
051    /**
052     *  Returns the optional cause that was issued with this report.
053     *
054     *  @return An instance of
055     *      {@link Optional}
056     *      that holds the cause.
057     */
058    public Optional<Throwable> getCause();
059
060    /**
061     *  Returns the optional message that was issued with this report.
062     *
063     *  @return An instance of
064     *      {@link Optional}
065     *      that holds the message.
066     */
067    public Optional<String> getMessage();
068
069    /**
070     *  Returns the performance section that is referred by this report.
071     *
072     *  @return The performance section.
073     */
074    public PerformanceSection getPerformanceSection();
075
076    /**
077     *  Returns the performance tracker that is issued by this report.
078     *
079     *  @return The performance tracker.
080     */
081    public PerformanceTracker getPerformanceTracker();
082}
083//  class PerformanceReport
084
085/*
086 *  End of File
087 */