1/* 2 * Copyright (c) 2023 Shenzhen Kaihong Digital Industry Development Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#include "scheduler.h" 17#include "common/common_macro.h" 18#include "common/sharing_log.h" 19#include "context/context_manager.h" 20#include "event/event_manager.h" 21#include "extend/magic_enum/magic_enum.hpp" 22#include "interaction/interaction_manager.h" 23#include "mediachannel/channel_manager.h" 24 25namespace OHOS { 26namespace Sharing { 27 28Scheduler::Scheduler() 29{ 30 SHARING_LOGD("trace."); 31 EventManager::GetInstance().AddListener(std::make_shared<SchedulerEventListener>()); 32} 33 34int32_t Scheduler::HandleEvent(SharingEvent &event) 35{ 36 SHARING_LOGD("trace."); 37 RETURN_INVALID_IF_NULL(event.eventMsg); 38 int32_t ret = -1; 39 switch (event.eventMsg->toMgr) { 40 case MODULE_CONTEXT: 41 SHARING_LOGD("handleEvent to context %{public}s.", 42 std::string(magic_enum::enum_name(event.eventMsg->type)).c_str()); 43 ret = ContextManager::GetInstance().HandleEvent(event); 44 SHARING_LOGD("handleEvent to context return %{public}s.", 45 std::string(magic_enum::enum_name(event.eventMsg->type)).c_str()); 46 break; 47 case MODULE_MEDIACHANNEL: 48 SHARING_LOGD("handleEvent to channel %{public}s.", 49 std::string(magic_enum::enum_name(event.eventMsg->type)).c_str()); 50 ret = ChannelManager::GetInstance().HandleEvent(event); 51 SHARING_LOGD("handleEvent to channel return %{public}s.", 52 std::string(magic_enum::enum_name(event.eventMsg->type)).c_str()); 53 break; 54 case MODULE_INTERACTION: 55 SHARING_LOGD("handleEvent to interaction %{public}s.", 56 std::string(magic_enum::enum_name(event.eventMsg->type)).c_str()); 57 ret = InteractionManager::GetInstance().HandleEvent(event); 58 SHARING_LOGD("handleEvent to interaction return %{public}s.", 59 std::string(magic_enum::enum_name(event.eventMsg->type)).c_str()); 60 break; 61 default: 62 break; 63 } 64 65 return ret; 66} 67 68int32_t SchedulerEventListener::OnEvent(SharingEvent &event) 69{ 70 SHARING_LOGD("trace."); 71 return Scheduler::GetInstance().HandleEvent(event); 72} 73 74} // namespace Sharing 75} // namespace OHOS