| // Copyright 2020 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_DRAIN_FILE_H_ |
| #define STARBOARD_LOADER_APP_DRAIN_FILE_H_ |
| |
| #include "starboard/types.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| // The units of time that the drain file age is represented in, in microseconds. |
| extern const int64_t kDrainFileAgeUnitUsec; |
| |
| // The amount of time of which a drain file is valid, in microseconds. |
| extern const int64_t kDrainFileMaximumAgeUsec; |
| |
| // The prefix that all drain file names will have. |
| extern const char kDrainFilePrefix[]; |
| |
| // Attempts to create a drain file in |dir| with the provided |app_key|. If |
| // there is an existing, non-expired drain file with a matching |app_key| it |
| // will be used instead. Returns |true| if a file was created or reused, |
| // otherwise |false|. |
| bool DrainFileTryDrain(const char* dir, const char* app_key); |
| |
| // Ranks the non-expired drain files in |dir| in non-descending order by drain |
| // file creation time, breaking ties by a C string comparison of the app keys |
| // of the drain files, and compares the provided |app_key| with the app key of |
| // the first ranked drain file. Returns |true| if they match, otherwise |false|. |
| bool DrainFileRankAndCheck(const char* dir, const char* app_key); |
| |
| // Clears all expired drain files in |dir| for all apps. |
| void DrainFileClearExpired(const char* dir); |
| |
| // Clears the drain files in |dir| with an app key matching |app_key|. |
| void DrainFileClearForApp(const char* dir, const char* app_key); |
| |
| // Clears all files and directories in |dir| except for the drain file with an |
| // app key matching |app_key|. |
| void DrainFilePrepareDirectory(const char* dir, const char* app_key); |
| |
| // Checks whether a non-expired drain file exists in |dir| for an app |
| // with key |app_key|. |
| bool DrainFileIsAppDraining(const char* dir, const char* app_key); |
| |
| // Checks whether a non-expired drain file exists in |dir| for an app |
| // with key different from |app_key|. |
| bool DrainFileIsAnotherAppDraining(const char* dir, const char* app_key); |
| |
| #ifdef __cplusplus |
| } // extern "C" |
| #endif |
| |
| #endif // STARBOARD_LOADER_APP_DRAIN_FILE_H_ |