1 /* 2 * Copyright (C) 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.tools.io 18 19 interface Artifact { 20 val runStatus: RunStatus 21 val absolutePath: String 22 val fileName: String 23 24 /** Stable identifier for this artifact (e.g. scenario + counter without current status) */ 25 val stableId: String 26 updateStatusnull27 fun updateStatus(newStatus: RunStatus) 28 fun readBytes(descriptor: ResultArtifactDescriptor): ByteArray? 29 30 /** @return if a file matching [descriptor exists in the artifact */ 31 fun hasTrace(descriptor: ResultArtifactDescriptor): Boolean 32 33 /** @return the number of files in the artifact */ 34 fun traceCount(): Int 35 fun deleteIfExists() 36 } 37