Home | History | Annotate | Download | only in android
      1 /*
      2  * Copyright (C) 2010 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 /**
     18  * @addtogroup Storage
     19  * @{
     20  */
     21 
     22 /**
     23  * @file storage_manager.h
     24  */
     25 
     26 #ifndef ANDROID_STORAGE_MANAGER_H
     27 #define ANDROID_STORAGE_MANAGER_H
     28 
     29 #include <stdint.h>
     30 
     31 #ifdef __cplusplus
     32 extern "C" {
     33 #endif
     34 
     35 struct AStorageManager;
     36 /**
     37  * {@link AStorageManager} manages application OBB storage, a pointer
     38  * can be obtained with AStorageManager_new().
     39  */
     40 typedef struct AStorageManager AStorageManager;
     41 
     42 /**
     43  * The different states of a OBB storage passed to AStorageManager_obbCallbackFunc().
     44  */
     45 enum {
     46     /**
     47      * The OBB container is now mounted and ready for use. Can be returned
     48      * as the status for callbacks made during asynchronous OBB actions.
     49      */
     50     AOBB_STATE_MOUNTED = 1,
     51 
     52     /**
     53      * The OBB container is now unmounted and not usable. Can be returned
     54      * as the status for callbacks made during asynchronous OBB actions.
     55      */
     56     AOBB_STATE_UNMOUNTED = 2,
     57 
     58     /**
     59      * There was an internal system error encountered while trying to
     60      * mount the OBB. Can be returned as the status for callbacks made
     61      * during asynchronous OBB actions.
     62      */
     63     AOBB_STATE_ERROR_INTERNAL = 20,
     64 
     65     /**
     66      * The OBB could not be mounted by the system. Can be returned as the
     67      * status for callbacks made during asynchronous OBB actions.
     68      */
     69     AOBB_STATE_ERROR_COULD_NOT_MOUNT = 21,
     70 
     71     /**
     72      * The OBB could not be unmounted. This most likely indicates that a
     73      * file is in use on the OBB. Can be returned as the status for
     74      * callbacks made during asynchronous OBB actions.
     75      */
     76     AOBB_STATE_ERROR_COULD_NOT_UNMOUNT = 22,
     77 
     78     /**
     79      * A call was made to unmount the OBB when it was not mounted. Can be
     80      * returned as the status for callbacks made during asynchronous OBB
     81      * actions.
     82      */
     83     AOBB_STATE_ERROR_NOT_MOUNTED = 23,
     84 
     85     /**
     86      * The OBB has already been mounted. Can be returned as the status for
     87      * callbacks made during asynchronous OBB actions.
     88      */
     89     AOBB_STATE_ERROR_ALREADY_MOUNTED = 24,
     90 
     91     /**
     92      * The current application does not have permission to use this OBB.
     93      * This could be because the OBB indicates it's owned by a different
     94      * package. Can be returned as the status for callbacks made during
     95      * asynchronous OBB actions.
     96      */
     97     AOBB_STATE_ERROR_PERMISSION_DENIED = 25,
     98 };
     99 
    100 /**
    101  * Obtains a new instance of AStorageManager.
    102  */
    103 AStorageManager* AStorageManager_new();
    104 
    105 /**
    106  * Release AStorageManager instance.
    107  */
    108 void AStorageManager_delete(AStorageManager* mgr);
    109 
    110 /**
    111  * Callback function for asynchronous calls made on OBB files.
    112  *
    113  * "state" is one of the following constants:
    114  * - {@link AOBB_STATE_MOUNTED}
    115  * - {@link AOBB_STATE_UNMOUNTED}
    116  * - {@link AOBB_STATE_ERROR_INTERNAL}
    117  * - {@link AOBB_STATE_ERROR_COULD_NOT_MOUNT}
    118  * - {@link AOBB_STATE_ERROR_COULD_NOT_UNMOUNT}
    119  * - {@link AOBB_STATE_ERROR_NOT_MOUNTED}
    120  * - {@link AOBB_STATE_ERROR_ALREADY_MOUNTED}
    121  * - {@link AOBB_STATE_ERROR_PERMISSION_DENIED}
    122  */
    123 typedef void (*AStorageManager_obbCallbackFunc)(const char* filename, const int32_t state, void* data);
    124 
    125 /**
    126  * Attempts to mount an OBB file. This is an asynchronous operation.
    127  */
    128 void AStorageManager_mountObb(AStorageManager* mgr, const char* filename, const char* key,
    129         AStorageManager_obbCallbackFunc cb, void* data);
    130 
    131 /**
    132  * Attempts to unmount an OBB file. This is an asynchronous operation.
    133  */
    134 void AStorageManager_unmountObb(AStorageManager* mgr, const char* filename, const int force,
    135         AStorageManager_obbCallbackFunc cb, void* data);
    136 
    137 /**
    138  * Check whether an OBB is mounted.
    139  */
    140 int AStorageManager_isObbMounted(AStorageManager* mgr, const char* filename);
    141 
    142 /**
    143  * Get the mounted path for an OBB.
    144  */
    145 const char* AStorageManager_getMountedObbPath(AStorageManager* mgr, const char* filename);
    146 
    147 
    148 #ifdef __cplusplus
    149 };
    150 #endif
    151 
    152 #endif      // ANDROID_STORAGE_MANAGER_H
    153 
    154 /** @} */
    155