188ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey/* 288ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey * Copyright (C) 2017 The Android Open Source Project 388ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey * 488ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License"); 588ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey * you may not use this file except in compliance with the License. 688ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey * You may obtain a copy of the License at 788ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey * 888ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey * http://www.apache.org/licenses/LICENSE-2.0 988ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey * 1088ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey * Unless required by applicable law or agreed to in writing, software 1188ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS, 1288ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1388ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey * See the License for the specific language governing permissions and 1488ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey * limitations under the License. 1588ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey */ 1688ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey 1788ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey#ifndef ANDROID_INSTALLD_CACHE_ITEM_H 1888ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey#define ANDROID_INSTALLD_CACHE_ITEM_H 1988ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey 2088ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey#include <memory> 2188ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey#include <string> 2288ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey 2388ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey#include <fts.h> 2488ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey#include <sys/types.h> 2588ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey#include <sys/stat.h> 2688ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey 2788ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey#include <android-base/macros.h> 2888ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey 2988ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkeynamespace android { 3088ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkeynamespace installd { 3188ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey 3288ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey/** 3388ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey * Single cache item that can be purged to free up space. This may be an 34ed909ae8db2f44ce7fe7003c6fee457f13669702Jeff Sharkey * isolated file, or an entire directory tree that should be deleted as a 35ed909ae8db2f44ce7fe7003c6fee457f13669702Jeff Sharkey * group. 3688ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey */ 3788ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkeyclass CacheItem { 3888ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkeypublic: 39871a8f236ef2a055b9955b47a342b2c44c020ef7Jeff Sharkey CacheItem(FTSENT* p); 4088ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey ~CacheItem(); 4188ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey 4288ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey std::string toString(); 4388ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey std::string buildPath(); 4488ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey 4588ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey int purge(); 4688ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey 4788ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey short level; 4888ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey bool directory; 49ed909ae8db2f44ce7fe7003c6fee457f13669702Jeff Sharkey bool group; 50871a8f236ef2a055b9955b47a342b2c44c020ef7Jeff Sharkey bool tombstone; 5188ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey int64_t size; 5288ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey time_t modified; 5388ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey 5488ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkeyprivate: 55871a8f236ef2a055b9955b47a342b2c44c020ef7Jeff Sharkey CacheItem* mParent; 5688ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey std::string mName; 5788ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey 5888ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey DISALLOW_COPY_AND_ASSIGN(CacheItem); 5988ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey}; 6088ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey 6188ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey} // namespace installd 6288ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey} // namespace android 6388ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey 6488ddd94834dae9c5862a07a1e4432b171b2f5d9fJeff Sharkey#endif // ANDROID_INSTALLD_CACHE_ITEM_H 65