blob: bddf3dfe78d55fe40287ab11a1b55e96f57c0af0 [file] [log] [blame]
/*
* Copyright (C) 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {TimeRange} from 'common/time';
import {TimeDuration} from 'common/time_duration';
import {TraceType} from 'trace/trace_type';
import {UserWarning} from './user_warning';
export class CorruptedArchive extends UserWarning {
constructor(private readonly file: File) {
super();
}
getDescriptor(): string {
return 'corrupted archive';
}
getMessage(): string {
return `${this.file.name}: corrupted archive`;
}
}
export class NoInputFiles extends UserWarning {
getDescriptor(): string {
return 'no input';
}
getMessage(): string {
return `Input has no valid trace files`;
}
}
export class TraceHasOldData extends UserWarning {
constructor(
private readonly descriptor: string,
private readonly timeGap?: TimeRange,
) {
super();
}
getDescriptor(): string {
return 'old trace';
}
getMessage(): string {
const elapsedTime = this.timeGap
? new TimeDuration(
this.timeGap.to.getValueNs() - this.timeGap.from.getValueNs(),
)
: undefined;
return (
`${this.descriptor}: discarded because data is old` +
(this.timeGap ? `er than ${elapsedTime?.format()}` : '')
);
}
}
export class TraceOverridden extends UserWarning {
constructor(
private readonly descriptor: string,
private readonly overridingType?: TraceType,
) {
super();
}
getDescriptor(): string {
return 'trace overridden';
}
getMessage(): string {
if (this.overridingType !== undefined) {
return `${this.descriptor}: overridden by another trace of type ${
TraceType[this.overridingType]
}`;
}
return `${this.descriptor}: overridden by another trace of same type`;
}
}
export class UnsupportedFileFormat extends UserWarning {
constructor(private readonly descriptor: string) {
super();
}
getDescriptor(): string {
return 'unsupported format';
}
getMessage(): string {
return `${this.descriptor}: unsupported format`;
}
}
export class InvalidPerfettoTrace extends UserWarning {
constructor(
private readonly descriptor: string,
private readonly parserErrorMessages: string[],
) {
super();
}
getDescriptor(): string {
return 'invalid perfetto trace';
}
getMessage(): string {
return `${this.descriptor}: ${this.parserErrorMessages.join(', ')}`;
}
}