* Copyright (c) 2022 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 FOUNDATION_APPEXECFWK_SERVICES_DBMS_INCLUDE_DISTRIBUTED_MONITOR_H
#define FOUNDATION_APPEXECFWK_SERVICES_DBMS_INCLUDE_DISTRIBUTED_MONITOR_H
#include "common_event_manager.h"
#include "common_event_support.h"
#include "common_event_subscriber.h"
#include "common_event_subscribe_info.h"
#include "distributed_data_storage.h"
namespace OHOS {
namespace AppExecFwk {
class DistributedMonitor : public EventFwk::CommonEventSubscriber {
public:
DistributedMonitor(const EventFwk::CommonEventSubscribeInfo& sp):CommonEventSubscriber(sp) {}
~DistributedMonitor() {}
void OnReceiveEvent(const EventFwk::CommonEventData &eventData)
{
auto want = eventData.GetWant();
std::string action = want.GetAction();
APP_LOGI("OnReceiveEvent action:%{public}s", action.c_str());
if (action == EventFwk::CommonEventSupport::COMMON_EVENT_USER_SWITCHED) {
int32_t userId = eventData.GetCode();
APP_LOGI("OnReceiveEvent switched userId:%{public}d", userId);
DistributedDataStorage::GetInstance()->UpdateDistributedData(userId);
return;
}
int32_t userId = want.GetIntParam(Constants::USER_ID, Constants::INVALID_USERID);
std::string bundleName = want.GetElement().GetBundleName();
if (action == EventFwk::CommonEventSupport::COMMON_EVENT_PACKAGE_ADDED ||
action == EventFwk::CommonEventSupport::COMMON_EVENT_PACKAGE_CHANGED) {
DistributedDataStorage::GetInstance()->SaveStorageDistributeInfo(bundleName, userId);
} else if (action == EventFwk::CommonEventSupport::COMMON_EVENT_PACKAGE_REMOVED) {
DistributedDataStorage::GetInstance()->DeleteStorageDistributeInfo(bundleName, userId);
} else {
APP_LOGW("OnReceiveEvent undefined action");
}
}
};
}
}
#endif