| /* |
| * Copyright (c) 2020, Google LLC and others |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Distribution License v. 1.0 which is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| package org.eclipse.jgit.logging; |
| |
| import java.util.ArrayList; |
| import java.util.Collections; |
| import java.util.List; |
| |
| /** |
| * Singleton that collects performance logs. |
| * |
| * @since 5.10 |
| */ |
| public class PerformanceLogContext { |
| /** Singleton instance that stores the statistics. */ |
| private static final PerformanceLogContext INSTANCE = new PerformanceLogContext(); |
| |
| /** List that stores events as performance logs. */ |
| private static final ThreadLocal<List<PerformanceLogRecord>> eventRecords = ThreadLocal |
| .withInitial(ArrayList::new); |
| |
| private PerformanceLogContext() { |
| } |
| |
| /** |
| * Get the instance of the context. |
| * |
| * @return instance of performance log context. |
| */ |
| public static PerformanceLogContext getInstance() { |
| return INSTANCE; |
| } |
| |
| /** |
| * Get the unmodifiable list of events as performance records. |
| * |
| * @return unmodifiable list of events as performance logs. |
| */ |
| public List<PerformanceLogRecord> getEventRecords() { |
| return Collections.unmodifiableList(eventRecords.get()); |
| } |
| |
| /** |
| * Adds a performance log record to the current list of events. |
| * |
| * @param record |
| * performance log record that is going to be added. |
| */ |
| public void addEvent(PerformanceLogRecord record) { |
| eventRecords.get().add(record); |
| } |
| |
| /** |
| * Removes all of the existing records from the current list of events. |
| */ |
| public void cleanEvents() { |
| eventRecords.remove(); |
| } |
| } |