* Copyright (C) 2023 Huawei Device Co., Ltd.
* 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 POST_EVENT_UTILS_H
#define POST_EVENT_UTILS_H
#include <map>
#include <string>
#include <variant>
#include <list>
#include <set>
#include "singleton.h"
namespace OHOS {
namespace Media {
#define COMPILE_HIDDEN __attribute__ ((visibility ("hidden")))
struct SyncEventStat {
int64_t startDownloadTime;
int64_t endDownloadTime;
int32_t downloadType;
int32_t totalPhotoCount;
int32_t totalAlbumNum;
int32_t addAlbumNum;
int32_t updateAlbumNum;
int32_t deleteAlbumNum;
int32_t totalAssetNum;
int32_t addAssetNum;
int32_t updateAssetNum;
int32_t deleteAssetNum;
int32_t avgRefreshImageVideoAlbumTime;
int32_t refreshUserAndSourceAlbumCount;
int32_t avgRefreshUserAndSourceAlbumTime;
int32_t refreshAnalysisAlbumCount;
int32_t avgRefreshAnalysisAlbumTime;
};
const std::string KEY_OPT_TYPE = "optType";
const std::string KEY_ERR_FILE = "errFile";
const std::string KEY_ERR_LINE = "errLine";
const std::string KEY_ERR_CODE = "errCode";
const std::string KEY_OPT_FILE = "optFile";
const std::string KEY_GNUMS = "gnums";
const std::string KEY_ANUMS = "anums";
const std::string KEY_PRE_VERSION = "preVersion";
const std::string KEY_AFTER_VERSION = "afterVersion";
const std::string KEY_COUNT = "count";
const std::string KEY_TIME_INTERVAL = "TIME_INTERVAL";
const std::string KEY_CALLING_PACKAGE = "CALLING_PACKAGE";
const std::string KEY_HIGH_QUALITY_COUNT = "HIGH_QUALITY_COUNT";
const std::string KEY_BALANCE_QUALITY_COUNT = "BALANCE_QUALITY_COUNT";
const std::string KEY_EMERGENCY_QUALITY_COUNT = "EMERGENCY_QUALITY_COUNT";
const std::string KEY_THIRD_PART_COUNT = "THIRD_PART_COUNT";
const std::string KEY_AUTO_COUNT = "AUTO_COUNT";
const std::string KEY_PHOTO_ID = "PHOTO_ID";
const std::string KEY_TOTAL_TIME_COST = "TOTAL_TIME_COST";
const std::string KEY_IS_DECODING = "IS_DECODING";
const std::string KEY_MEDIA_SUBTYPE = "MEDIA_SUBTYPE";
const std::string KEY_CREATE_ASSET_TIME = "CREATE_ASSET_TIME";
const std::string KEY_PHOTO_CAPTURE_TIME = "PHOTO_CAPTURE_TIME";
const std::string KEY_SAVE_CAMERA_TIME = "SAVE_CAMERA_TIME";
const std::string KEY_FAULT_TYPE = "FAULT_TYPE";
const std::string KEY_FAULT_REASON = "FAULT_REASON";
const std::string KEY_CREATE_ASSET = "CREATE_ASSET";
const std::string KEY_CREATE_ASSET_DB_ERROR = "CREATE_ASSET_DB_ERROR";
const std::string KEY_SAVE_ASSET = "SAVE_ASSET";
const std::string KEY_CAPTURE_IMAGE_TIMES_SUCCESS = "CAPTURE_IMAGE_TIMES_SUCCESS";
const std::string KEY_CAPTURE_VIDEO_TIMES = "CAPTURE_VIDEO_TIMES";
const std::string KEY_CAPTURE_VIDEO_TIMES_SUCCESS = "CAPTURE_VIDEO_TIMES_SUCCESS";
const std::string KEY_RESULT = "RESULT";
const std::string KEY_MEDIA_TYPE = "MEDIA_TYPE";
const std::string KEY_CLOUD_ENHANCEMENT_COMPLETE_TYPE = "COMPLETE_TYPE";
const std::string KEY_CLOUD_ENHANCEMENT_FINISH_TYPE = "FINISH_TYPE";
const std::string KEY_CLOUD_ENHANCEMENT_FILE_TYPE = "FILE_TYPE";
const std::string KEY_DB_CORRUPT = "DB_CORRUPT_DATE";
namespace {
const char* KEY_START_DOWNLOAD_TIME = "START_DOWNLOAD_T";
const char* KEY_END_DOWNLOAD_TIME = "END_DOWNLOAD_T";
const char* KEY_DOWNLOAD_TYPE = "DOWNLOAD_TYPE";
const char* KEY_TOTAL_PHOTO_COUNT = "TOTAL_PHOTO_C";
const char* KEY_TOTAL_ALBUM_NUM = "TOTAL_ALBUM_NUM";
const char* KEY_ADD_ALBUM_NUM = "ADD_ALBUM_NUM";
const char* KEY_UPDATE_ALBUM_NUM = "UPDATE_ALBUM_NUM";
const char* KEY_DELETE_ALBUM_NUM = "DELETE_ALBUM_NUM";
const char* KEY_TOTAL_ASSET_NUM = "TOTAL_ASSET_NUM";
const char* KEY_ADD_ASSET_NUM = "ADD_ASSET_NUM";
const char* KEY_UPDATE_ASSET_NUM = "UPDATE_ASSET_NUM";
const char* KEY_DELETE_ASSET_NUM = "DELETE_ASSET_NUM";
const char* KEY_REFRESH_IMAGEVIDEO_ALBUM_TOTAL_COUNT = "REF_IMAGEVIDEO_ALBUM_C";
const char* KEY_REFRESH_IMAGEVIDEO_ALBUM_TOTAL_TIME = "REF_IMAGEVIDEO_ALBUM_T";
const char* KEY_AVG_REFRESH_IMAGEVIDEO_ALBUM_TIME = "AVG_REF_IMAGEVIDEO_ALBUM_T";
const char* KEY_REFRESH_USER_AND_SOURCE_ALBUM_COUNT = "REF_USERSOURCE_ALBUM_C";
const char* KEY_REFRESH_USER_AND_SOURCE_ALBUM_TOTAL_COUNT = "REF_USERSOURCE_ALBUM_TOTAL_C";
const char* KEY_REFRESH_USER_AND_SOURCE_ALBUM_TOTAL_TIME = "REF_USERSOURCE_ALBUM_TOTAL_T";
const char* KEY_AVG_REFRESH_USER_AND_SOURCE_ALBUM_TIME = "AVG_REF_USERSOURCE_ALBUM_T";
const char* KEY_REFRESH_ANALYSIS_ALBUM_COUNT = "REF_ANALYSIS_ALBUM_C";
const char* KEY_REFRESH_ANALYSIS_ALBUM_TOTAL_COUNT = "REF_ANALYSIS_ALBUM_TOTAL_C";
const char* KEY_REFRESH_ANALYSIS_ALBUM_TOTAL_TIME = "REF_ANALYSIS_ALBUM_TOTAL_T";
const char* KEY_AVG_REFRESH_ANALYSIS_ALBUM_TIME = "AVG_REF_ANALYSIS_ALBUM_T";
}
enum OptType {
CREATE = 0,
THUMB,
SCAN,
QUERY,
};
enum ErrType {
DEFAULT_ERR = 0,
FILE_OPT_ERR,
DB_OPT_ERR,
DB_UPGRADE_ERR,
DB_CORRUPT_ERR,
RECOVERY_ERR,
};
enum StatType {
DEFAULT_STAT = 0,
THUMBNAIL_STAT,
DB_UPGRADE_STAT,
SYNC_STAT,
AGING_STAT,
MSC_FIRST_VISIT_STAT,
MSC_REQUEST_POLICY_STAT,
MSC_TRIGGER_RATIO_STAT,
MSC_TOTAL_TIME_COST_STAT,
MSC_RESULT_STAT,
CLOUD_ENHANCEMENT_GET_COUNT_STAT,
MSC_SAVE_CAMERA_PHOTO_STAT,
MSC_CAPTURE_FAULT_STAT,
MSC_CAPTURE_TIMES,
};
using VariantMap = std::map<std::string, std::variant<int32_t, int64_t, std::string>>;
class PostEventUtils : public Singleton<PostEventUtils> {
public:
void PostErrorProcess(const uint32_t &errType, const VariantMap &error);
void PostStatProcess(const uint32_t &statType, const VariantMap &stat);
void CreateCloudDownloadSyncStat(std::string& syncId);
void UpdateCloudDownloadSyncStat(VariantMap& syncStat);
void PostCloudDownloadSyncStat(std::string& syncId);
private:
COMPILE_HIDDEN std::string GetOptType(const uint32_t &optType);
COMPILE_HIDDEN void PostFileOptError(const VariantMap &errMap);
COMPILE_HIDDEN void PostRecoveryOptError(const VariantMap &error);
COMPILE_HIDDEN void PostDbOptError(const VariantMap &errMap);
COMPILE_HIDDEN void PostDbUpgradeError(const VariantMap &errMap);
COMPILE_HIDDEN void PostThumbnailStat(const VariantMap &stat);
COMPILE_HIDDEN void PostDbUpgradeStat(const VariantMap &stat);
COMPILE_HIDDEN void PostSyncStat();
COMPILE_HIDDEN void PostAgingStat(const VariantMap &stat);
COMPILE_HIDDEN void PostMscFirstVisitStat(const VariantMap &stat);
COMPILE_HIDDEN void PostMscRequestPolicyStat(const VariantMap &stat);
COMPILE_HIDDEN void PostMscTriggerRatioStat(const VariantMap &stat);
COMPILE_HIDDEN void PostMscTotalTimeCostStat(const VariantMap &stat);
COMPILE_HIDDEN void PostMscResultStat(const VariantMap &stat);
COMPILE_HIDDEN void PostCloudEnhanceStat(const VariantMap &stat);
COMPILE_HIDDEN void PostDatabaseCorruption(const VariantMap &errMap);
COMPILE_HIDDEN void PostSaveCameraPhotoStat(const VariantMap &stat);
COMPILE_HIDDEN void PostCaptureFaultStat(const VariantMap &stat);
COMPILE_HIDDEN void PostCaptureTimesStat(const VariantMap &stat);
COMPILE_HIDDEN int GetIntValue(const std::string &key, const VariantMap &map);
COMPILE_HIDDEN int64_t GetInt64Value(const std::string &key, const VariantMap &map);
COMPILE_HIDDEN std::string GetStringValue(const std::string &key, const VariantMap &map);
COMPILE_HIDDEN SyncEventStat GetSyncEventStat(const VariantMap &stat);
COMPILE_HIDDEN uint32_t thumbnailTimes_ = 0;
COMPILE_HIDDEN uint32_t dbUpgradeTimes_ = 0;
COMPILE_HIDDEN uint32_t syncTimes_ = 0;
COMPILE_HIDDEN uint32_t recycleTimes_ = 0;
std::mutex cloudDownloadSyncStatMutex_;
std::string currentSyncId_;
std::list<int32_t> analysis_alunm_count_;
std::list<int32_t> user_alubm_count_;
COMPILE_HIDDEN VariantMap cloudDownloadSyncStat_;
};
}
}
#endif