| // Copyright 2019 The Cobalt Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| #ifndef STARBOARD_LOADER_APP_INSTALLATION_MANAGER_H_ |
| #define STARBOARD_LOADER_APP_INSTALLATION_MANAGER_H_ |
| |
| #include "starboard/extension/loader_app_metrics.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| // The installation is not successful. |
| #define IM_INSTALLATION_STATUS_NOT_SUCCESS 0 |
| |
| // The installation is successful. |
| #define IM_INSTALLATION_STATUS_SUCCESS 1 |
| |
| // An error occurred and the status of the installation is unknown. |
| #define IM_INSTALLATION_STATUS_ERROR -1 |
| |
| #define IM_SUCCESS 0 |
| #define IM_ERROR -1 |
| |
| #define MAX_APP_KEY_LENGTH 1024 |
| |
| // The filename prefix for the Installation Manager store file. |
| #define IM_STORE_FILE_NAME_PREFIX "installation_store_" |
| |
| // The filename suffix for the Installation Manager store file. |
| #define IM_STORE_FILE_NAME_SUFFIX ".pb" |
| |
| // The max size in bytes of the store file. |
| #define IM_MAX_INSTALLATION_STORE_SIZE 1024 * 1024 |
| |
| // The max number a tries per installation before it |
| // is discarded if not successful. |
| #define IM_MAX_NUM_TRIES 3 |
| |
| // The Installation Manager API is thread safe and |
| // can be used from any thread. Most calls would |
| // trigger I/O operation unless the information is |
| // already cached in memory. |
| |
| // Initializes the Installation Manager with the |
| // max number of installations and with an app specific key. |
| // If the store doesn't exist an initial store would be |
| // created. A subsequent call to |ImUninitialize| without |
| // corresponding |ImUninitialize| will fail. |
| // Returns IM_SUCCESS on success and IM_ERROR on error. |
| int ImInitialize(int max_num_installations, const char* app_key); |
| |
| // Retrieves the application key. |
| // Returns IM_SUCCESS on success and IM_ERROR on error. |
| int ImGetAppKey(char* app_key, int app_key_length); |
| |
| // Retrieves the max number of installation slots. |
| // Returns IM_SUCCESS on success and IM_ERROR on error. |
| int ImGetMaxNumberInstallations(); |
| |
| // Uninitialize the Installation Manager. |
| void ImUninitialize(); |
| |
| // Resets the Installation Manager and clear all state. |
| // Returns IM_SUCCESS on success and IM_ERROR on error. |
| int ImReset(); |
| |
| // Gets the status of the |installation_index| installation. |
| // Returns |IM_INSTALLATION_STATUS_SUCCESS| if the installation is successful. |
| // Returns |IM_INSTALLATION_STATUS_NOT_SUCCESS| if the installation is not |
| // successful. Returns |IM_INSTALLATION_STATUS_ERROR| on error. |
| int ImGetInstallationStatus(int installation_index); |
| |
| // Returns the number of tries left for the |installation_index| installation. |
| // Returns |IM_ERROR| on error. |
| int ImGetInstallationNumTriesLeft(int installation_index); |
| |
| // Decrements the number of tries left for installation |installation_index|. |
| // Returns IM_SUCCESS on success and IM_ERROR on error. |
| int ImDecrementInstallationNumTries(int installation_index); |
| |
| // Retrieves the current installation index. |
| // Returns |IM_ERROR| on error. |
| int ImGetCurrentInstallationIndex(); |
| |
| // Resets the slot for index |installation_index|. |
| // Returns |IM_ERROR| on error. |
| int ImResetInstallation(int installation_index); |
| |
| // Selects a new installation index and prepares the installation |
| // slot for new installation use. |
| // Returns |IM_ERROR| on error. |
| int ImSelectNewInstallationIndex(); |
| |
| // Retrieves the absolute installation path for the installation |
| // |installation_index| in the buffer |path| with length |path_length|. |
| // Returns IM_SUCCESS on success and IM_ERROR on error. |
| int ImGetInstallationPath(int installation_index, char* path, int path_length); |
| |
| // Mark the installation |installation_index| as successful. |
| // Returns IM_SUCCESS on success and IM_ERROR on error. |
| int ImMarkInstallationSuccessful(int installation_index); |
| |
| // Rolls forward the installation slot requested to be used. |
| // The operation makes it current installation. |
| // Returns IM_SUCCESS on success and IM_ERROR on error. |
| int ImRollForwardIfNeeded(); |
| |
| // Rolls forward to the slot at |installation_index|. |
| // Returns IM_SUCCESS on success and IM_ERROR on error. |
| int ImRollForward(int installation_index); |
| |
| // Revert to a previous successful installation. |
| // Returns the installation to which it was reverted. |
| // Returns |IM_ERROR| on error. |
| int ImRevertToSuccessfulInstallation(SlotSelectionStatus status); |
| |
| // Request the installation at |installation_index| to be rolled |
| // forward next time the Loader App tries to load the app. |
| // Returns IM_SUCCESS on success and IM_ERROR on error. |
| int ImRequestRollForwardToInstallation(int installation_index); |
| |
| #ifdef __cplusplus |
| } // extern "C" |
| #endif |
| |
| #endif // STARBOARD_LOADER_APP_INSTALLATION_MANAGER_H_ |