1 /* 2 * Copyright 2022 Google LLC 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 package com.google.android.libraries.mobiledatadownload.file.openers; 17 18 import android.net.Uri; 19 import android.os.Process; 20 import java.util.concurrent.atomic.AtomicLong; 21 22 /** Utility for creating a temp file based on PID and ThreadID. */ 23 // TODO: consolidate with Pipes.java 24 final class ScratchFile { 25 26 private static final AtomicLong SCRATCH_COUNTER = new AtomicLong(); 27 scratchUri(Uri file)28 static Uri scratchUri(Uri file) { 29 int process = Process.myPid(); 30 long thread = Thread.currentThread().getId(); 31 long timestamp = System.currentTimeMillis(); 32 long count = SCRATCH_COUNTER.getAndIncrement(); 33 String suffix = ".mobstore_tmp-" + process + "-" + thread + "-" + timestamp + "-" + count; 34 return file.buildUpon().path(file.getPath() + suffix).build(); 35 } 36 ScratchFile()37 private ScratchFile() {} 38 } 39