1951a39d68df598db08dfced8b4707755864a0492Ying Wang/* 2951a39d68df598db08dfced8b4707755864a0492Ying Wang * Copyright (C) 2010 The Android Open Source Project 3951a39d68df598db08dfced8b4707755864a0492Ying Wang * 4951a39d68df598db08dfced8b4707755864a0492Ying Wang * Licensed under the Apache License, Version 2.0 (the "License"); 5951a39d68df598db08dfced8b4707755864a0492Ying Wang * you may not use this file except in compliance with the License. 6951a39d68df598db08dfced8b4707755864a0492Ying Wang * You may obtain a copy of the License at 7951a39d68df598db08dfced8b4707755864a0492Ying Wang * 8951a39d68df598db08dfced8b4707755864a0492Ying Wang * http://www.apache.org/licenses/LICENSE-2.0 9951a39d68df598db08dfced8b4707755864a0492Ying Wang * 10951a39d68df598db08dfced8b4707755864a0492Ying Wang * Unless required by applicable law or agreed to in writing, software 11951a39d68df598db08dfced8b4707755864a0492Ying Wang * distributed under the License is distributed on an "AS IS" BASIS, 12951a39d68df598db08dfced8b4707755864a0492Ying Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13951a39d68df598db08dfced8b4707755864a0492Ying Wang * See the License for the specific language governing permissions and 14951a39d68df598db08dfced8b4707755864a0492Ying Wang * limitations under the License. 15951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 16951a39d68df598db08dfced8b4707755864a0492Ying Wang 17951a39d68df598db08dfced8b4707755864a0492Ying Wang 18951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef ANDROID_STORAGE_MANAGER_H 19951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ANDROID_STORAGE_MANAGER_H 20951a39d68df598db08dfced8b4707755864a0492Ying Wang 21951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <stdint.h> 22951a39d68df598db08dfced8b4707755864a0492Ying Wang 23951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifdef __cplusplus 24951a39d68df598db08dfced8b4707755864a0492Ying Wangextern "C" { 25951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 26951a39d68df598db08dfced8b4707755864a0492Ying Wang 27951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct AStorageManager; 28951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct AStorageManager AStorageManager; 29951a39d68df598db08dfced8b4707755864a0492Ying Wang 30951a39d68df598db08dfced8b4707755864a0492Ying Wangenum { 31951a39d68df598db08dfced8b4707755864a0492Ying Wang /* 32951a39d68df598db08dfced8b4707755864a0492Ying Wang * The OBB container is now mounted and ready for use. Can be returned 33951a39d68df598db08dfced8b4707755864a0492Ying Wang * as the status for callbacks made during asynchronous OBB actions. 34951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 35951a39d68df598db08dfced8b4707755864a0492Ying Wang AOBB_STATE_MOUNTED = 1, 36951a39d68df598db08dfced8b4707755864a0492Ying Wang 37951a39d68df598db08dfced8b4707755864a0492Ying Wang /* 38951a39d68df598db08dfced8b4707755864a0492Ying Wang * The OBB container is now unmounted and not usable. Can be returned 39951a39d68df598db08dfced8b4707755864a0492Ying Wang * as the status for callbacks made during asynchronous OBB actions. 40951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 41951a39d68df598db08dfced8b4707755864a0492Ying Wang AOBB_STATE_UNMOUNTED = 2, 42951a39d68df598db08dfced8b4707755864a0492Ying Wang 43951a39d68df598db08dfced8b4707755864a0492Ying Wang /* 44951a39d68df598db08dfced8b4707755864a0492Ying Wang * There was an internal system error encountered while trying to 45951a39d68df598db08dfced8b4707755864a0492Ying Wang * mount the OBB. Can be returned as the status for callbacks made 46951a39d68df598db08dfced8b4707755864a0492Ying Wang * during asynchronous OBB actions. 47951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 48951a39d68df598db08dfced8b4707755864a0492Ying Wang AOBB_STATE_ERROR_INTERNAL = 20, 49951a39d68df598db08dfced8b4707755864a0492Ying Wang 50951a39d68df598db08dfced8b4707755864a0492Ying Wang /* 51951a39d68df598db08dfced8b4707755864a0492Ying Wang * The OBB could not be mounted by the system. Can be returned as the 52951a39d68df598db08dfced8b4707755864a0492Ying Wang * status for callbacks made during asynchronous OBB actions. 53951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 54951a39d68df598db08dfced8b4707755864a0492Ying Wang AOBB_STATE_ERROR_COULD_NOT_MOUNT = 21, 55951a39d68df598db08dfced8b4707755864a0492Ying Wang 56951a39d68df598db08dfced8b4707755864a0492Ying Wang /* 57951a39d68df598db08dfced8b4707755864a0492Ying Wang * The OBB could not be unmounted. This most likely indicates that a 58951a39d68df598db08dfced8b4707755864a0492Ying Wang * file is in use on the OBB. Can be returned as the status for 59951a39d68df598db08dfced8b4707755864a0492Ying Wang * callbacks made during asynchronous OBB actions. 60951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 61951a39d68df598db08dfced8b4707755864a0492Ying Wang AOBB_STATE_ERROR_COULD_NOT_UNMOUNT = 22, 62951a39d68df598db08dfced8b4707755864a0492Ying Wang 63951a39d68df598db08dfced8b4707755864a0492Ying Wang /* 64951a39d68df598db08dfced8b4707755864a0492Ying Wang * A call was made to unmount the OBB when it was not mounted. Can be 65951a39d68df598db08dfced8b4707755864a0492Ying Wang * returned as the status for callbacks made during asynchronous OBB 66951a39d68df598db08dfced8b4707755864a0492Ying Wang * actions. 67951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 68951a39d68df598db08dfced8b4707755864a0492Ying Wang AOBB_STATE_ERROR_NOT_MOUNTED = 23, 69951a39d68df598db08dfced8b4707755864a0492Ying Wang 70951a39d68df598db08dfced8b4707755864a0492Ying Wang /* 71951a39d68df598db08dfced8b4707755864a0492Ying Wang * The OBB has already been mounted. Can be returned as the status for 72951a39d68df598db08dfced8b4707755864a0492Ying Wang * callbacks made during asynchronous OBB actions. 73951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 74951a39d68df598db08dfced8b4707755864a0492Ying Wang AOBB_STATE_ERROR_ALREADY_MOUNTED = 24, 75951a39d68df598db08dfced8b4707755864a0492Ying Wang 76951a39d68df598db08dfced8b4707755864a0492Ying Wang /* 77951a39d68df598db08dfced8b4707755864a0492Ying Wang * The current application does not have permission to use this OBB. 78951a39d68df598db08dfced8b4707755864a0492Ying Wang * This could be because the OBB indicates it's owned by a different 79951a39d68df598db08dfced8b4707755864a0492Ying Wang * package. Can be returned as the status for callbacks made during 80951a39d68df598db08dfced8b4707755864a0492Ying Wang * asynchronous OBB actions. 81951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 82951a39d68df598db08dfced8b4707755864a0492Ying Wang AOBB_STATE_ERROR_PERMISSION_DENIED = 25, 83951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 84951a39d68df598db08dfced8b4707755864a0492Ying Wang 85951a39d68df598db08dfced8b4707755864a0492Ying Wang/** 86951a39d68df598db08dfced8b4707755864a0492Ying Wang * Obtains a new instance of AStorageManager. 87951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 88951a39d68df598db08dfced8b4707755864a0492Ying WangAStorageManager* AStorageManager_new(); 89951a39d68df598db08dfced8b4707755864a0492Ying Wang 90951a39d68df598db08dfced8b4707755864a0492Ying Wang/** 91951a39d68df598db08dfced8b4707755864a0492Ying Wang * Release AStorageManager instance. 92951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 93951a39d68df598db08dfced8b4707755864a0492Ying Wangvoid AStorageManager_delete(AStorageManager* mgr); 94951a39d68df598db08dfced8b4707755864a0492Ying Wang 95951a39d68df598db08dfced8b4707755864a0492Ying Wang/** 96951a39d68df598db08dfced8b4707755864a0492Ying Wang * Callback function for asynchronous calls made on OBB files. 97951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 98951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef void (*AStorageManager_obbCallbackFunc)(const char* filename, const int32_t state, void* data); 99951a39d68df598db08dfced8b4707755864a0492Ying Wang 100951a39d68df598db08dfced8b4707755864a0492Ying Wang/** 101951a39d68df598db08dfced8b4707755864a0492Ying Wang * Attempts to mount an OBB file. This is an asynchronous operation. 102951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 103951a39d68df598db08dfced8b4707755864a0492Ying Wangvoid AStorageManager_mountObb(AStorageManager* mgr, const char* filename, const char* key, 104951a39d68df598db08dfced8b4707755864a0492Ying Wang AStorageManager_obbCallbackFunc cb, void* data); 105951a39d68df598db08dfced8b4707755864a0492Ying Wang 106951a39d68df598db08dfced8b4707755864a0492Ying Wang/** 107951a39d68df598db08dfced8b4707755864a0492Ying Wang * Attempts to unmount an OBB file. This is an asynchronous operation. 108951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 109951a39d68df598db08dfced8b4707755864a0492Ying Wangvoid AStorageManager_unmountObb(AStorageManager* mgr, const char* filename, const int force, 110951a39d68df598db08dfced8b4707755864a0492Ying Wang AStorageManager_obbCallbackFunc cb, void* data); 111951a39d68df598db08dfced8b4707755864a0492Ying Wang 112951a39d68df598db08dfced8b4707755864a0492Ying Wang/** 113951a39d68df598db08dfced8b4707755864a0492Ying Wang * Check whether an OBB is mounted. 114951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 115951a39d68df598db08dfced8b4707755864a0492Ying Wangint AStorageManager_isObbMounted(AStorageManager* mgr, const char* filename); 116951a39d68df598db08dfced8b4707755864a0492Ying Wang 117951a39d68df598db08dfced8b4707755864a0492Ying Wang/** 118951a39d68df598db08dfced8b4707755864a0492Ying Wang * Get the mounted path for an OBB. 119951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 120951a39d68df598db08dfced8b4707755864a0492Ying Wangconst char* AStorageManager_getMountedObbPath(AStorageManager* mgr, const char* filename); 121951a39d68df598db08dfced8b4707755864a0492Ying Wang 122951a39d68df598db08dfced8b4707755864a0492Ying Wang 123951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifdef __cplusplus 124951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 125951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 126951a39d68df598db08dfced8b4707755864a0492Ying Wang 127951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif // ANDROID_STORAGE_MANAGER_H 128