blob: fab0dd102a849fdee59a3a0d415127c25d4ab0d3 [file] [log] [blame]
/*
* 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();
}
}