1 /* 2 * Copyright (c) 2022-2024 Huawei Device 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 #ifndef OHOS_AVSESSION_CONTROLLER_STUB_H 17 #define OHOS_AVSESSION_CONTROLLER_STUB_H 18 19 #include <map> 20 #include "iavsession_controller.h" 21 #include "iremote_stub.h" 22 23 namespace OHOS::AVSession { 24 class AVSessionControllerStub : public IRemoteStub<IAVSessionController> { 25 public: 26 int32_t OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option) override; 27 RegisterCallback(const std::shared_ptr<AVControllerCallback> & callback)28 int32_t RegisterCallback(const std::shared_ptr<AVControllerCallback>& callback) override 29 { 30 return 0; 31 } 32 GetRealPlaybackPosition()33 int64_t GetRealPlaybackPosition() override 34 { 35 return 0; 36 } 37 IsDestroy()38 bool IsDestroy() override 39 { 40 return true; 41 } 42 43 private: 44 int32_t HandleRegisterCallbackInner(MessageParcel& data, MessageParcel& reply); 45 46 int32_t HandleDestroy(MessageParcel& data, MessageParcel& reply); 47 48 int32_t HandleGetAVCallState(MessageParcel& data, MessageParcel& reply); 49 50 int32_t HandleGetAVCallMetaData(MessageParcel& data, MessageParcel& reply); 51 52 int32_t HandleGetAVPlaybackState(MessageParcel& data, MessageParcel& reply); 53 54 int32_t HandleSendControlCommand(MessageParcel& data, MessageParcel& reply); 55 56 int32_t HandleSendCommonCommand(MessageParcel& data, MessageParcel& reply); 57 58 int32_t HandleGetAVMetaData(MessageParcel& data, MessageParcel& reply); 59 60 int32_t HandleGetAVQueueItems(MessageParcel& data, MessageParcel& reply); 61 62 int32_t HandleGetAVQueueTitle(MessageParcel& data, MessageParcel& reply); 63 64 int32_t HandleSkipToQueueItem(MessageParcel& data, MessageParcel& reply); 65 66 int32_t HandleGetExtras(MessageParcel& data, MessageParcel& reply); 67 68 int32_t HandleSendAVKeyEvent(MessageParcel& data, MessageParcel& reply); 69 70 int32_t HandleGetLaunchAbility(MessageParcel& data, MessageParcel& reply); 71 72 int32_t HandleGetValidCommands(MessageParcel& data, MessageParcel& reply); 73 74 int32_t HandleSetAVCallMetaFilter(MessageParcel& data, MessageParcel& reply); 75 76 int32_t HandleSetAVCallStateFilter(MessageParcel& data, MessageParcel& reply); 77 78 int32_t HandleSetMetaFilter(MessageParcel& data, MessageParcel& reply); 79 80 int32_t HandleSetPlaybackFilter(MessageParcel& data, MessageParcel& reply); 81 82 int32_t HandleIsSessionActive(MessageParcel& data, MessageParcel& reply); 83 84 int32_t HandleGetSessionId(MessageParcel& data, MessageParcel& reply); 85 86 static bool CheckInterfaceToken(MessageParcel& data); 87 88 static void DoMetadataImgCleanInStub(AVMetaData& data); 89 static int32_t DoMetadataGetReplyInStub(AVMetaData& metaData, MessageParcel& reply); 90 91 using HandlerFunc = std::function<int32_t(MessageParcel&, MessageParcel&)>; 92 std::map<uint32_t, HandlerFunc> handlers = { 93 {CONTROLLER_CMD_REGISTER_CALLBACK, 94 [this](MessageParcel& data, MessageParcel& reply) { return HandleRegisterCallbackInner(data, reply); }}, 95 {CONTROLLER_CMD_DESTROY, 96 [this](MessageParcel& data, MessageParcel& reply) { return HandleDestroy(data, reply); }}, 97 {CONTROLLER_CMD_GET_AV_PLAYBACK_STATE, 98 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVPlaybackState(data, reply); }}, 99 {CONTROLLER_CMD_GET_AV_META_DATA, 100 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVMetaData(data, reply); }}, 101 {CONTROLLER_CMD_SEND_AV_KEYEVENT, 102 [this](MessageParcel& data, MessageParcel& reply) { return HandleSendAVKeyEvent(data, reply); }}, 103 {CONTROLLER_CMD_GET_LAUNCH_ABILITY, 104 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetLaunchAbility(data, reply); }}, 105 {CONTROLLER_CMD_GET_VALID_COMMANDS, 106 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetValidCommands(data, reply); }}, 107 {CONTROLLER_CMD_SEND_CONTROL_COMMAND, 108 [this](MessageParcel& data, MessageParcel& reply) { return HandleSendControlCommand(data, reply); }}, 109 {CONTROLLER_CMD_SEND_COMMON_COMMAND, 110 [this](MessageParcel& data, MessageParcel& reply) { return HandleSendCommonCommand(data, reply); }}, 111 {CONTROLLER_CMD_SET_META_FILTER, 112 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetMetaFilter(data, reply); }}, 113 {CONTROLLER_CMD_SET_PLAYBACK_FILTER, 114 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetPlaybackFilter(data, reply); }}, 115 {CONTROLLER_CMD_IS_SESSION_ACTIVE, 116 [this](MessageParcel& data, MessageParcel& reply) { return HandleIsSessionActive(data, reply); }}, 117 {CONTROLLER_CMD_GET_SESSION_ID, 118 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetSessionId(data, reply); }}, 119 {CONTROLLER_CMD_GET_AV_QUEUE_ITEMS, 120 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVQueueItems(data, reply); }}, 121 {CONTROLLER_CMD_GET_AV_QUEUE_TITLE, 122 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVQueueTitle(data, reply); }}, 123 {CONTROLLER_CMD_SKIP_TO_QUEUE_ITEM, 124 [this](MessageParcel& data, MessageParcel& reply) { return HandleSkipToQueueItem(data, reply); }}, 125 {CONTROLLER_CMD_GET_EXTRAS, 126 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetExtras(data, reply); }}, 127 {CONTROLLER_CMD_GET_AVCALL_META_DATA, 128 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVCallMetaData(data, reply); }}, 129 {CONTROLLER_CMD_SET_AVCALL_META_FILTER, 130 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVCallMetaFilter(data, reply); }}, 131 {CONTROLLER_CMD_GET_AVCALL_STATE, 132 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVCallState(data, reply); }}, 133 {CONTROLLER_CMD_SET_AVCALL_STATE_FILTER, 134 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVCallStateFilter(data, reply); }} 135 }; 136 std::map<uint32_t, std::string> mapCodeToFuncNameXCollie = { 137 {CONTROLLER_CMD_REGISTER_CALLBACK, "HandleRegisterCallbackInner"}, 138 {CONTROLLER_CMD_DESTROY, "HandleDestroy"}, 139 {CONTROLLER_CMD_GET_AV_PLAYBACK_STATE, "HandleGetAVPlaybackState"}, 140 {CONTROLLER_CMD_GET_AV_META_DATA, "HandleGetAVMetaData"}, 141 {CONTROLLER_CMD_SEND_AV_KEYEVENT, "HandleSendAVKeyEvent"}, 142 {CONTROLLER_CMD_GET_LAUNCH_ABILITY, "HandleGetLaunchAbility"}, 143 {CONTROLLER_CMD_GET_VALID_COMMANDS, "HandleGetValidCommands"}, 144 {CONTROLLER_CMD_SEND_CONTROL_COMMAND, "HandleSendControlCommand"}, 145 {CONTROLLER_CMD_SEND_COMMON_COMMAND, "HandleSendCommonCommand"}, 146 {CONTROLLER_CMD_SET_META_FILTER, "HandleSetMetaFilter"}, 147 {CONTROLLER_CMD_SET_PLAYBACK_FILTER, "HandleSetPlaybackFilter"}, 148 {CONTROLLER_CMD_IS_SESSION_ACTIVE, "HandleIsSessionActive"}, 149 {CONTROLLER_CMD_GET_SESSION_ID, "HandleGetSessionId"}, 150 {CONTROLLER_CMD_GET_AV_QUEUE_ITEMS, "HandleGetAVQueueItems"}, 151 {CONTROLLER_CMD_GET_AV_QUEUE_TITLE, "HandleGetAVQueueTitle"}, 152 {CONTROLLER_CMD_SKIP_TO_QUEUE_ITEM, "HandleSkipToQueueItem"}, 153 {CONTROLLER_CMD_GET_EXTRAS, "HandleGetExtras"}, 154 {CONTROLLER_CMD_GET_AVCALL_META_DATA, "HandleGetAVCallMetaData"}, 155 {CONTROLLER_CMD_SET_AVCALL_META_FILTER, "HandleSetAVCallMetaFilter"}, 156 {CONTROLLER_CMD_GET_AVCALL_STATE, "HandleGetAVCallState"}, 157 {CONTROLLER_CMD_SET_AVCALL_STATE_FILTER, "HandleSetAVCallStateFilter"} 158 }; 159 const size_t defaultIpcCapacity = 1048576; // Increase the IPC default capacity(200K) to 1M 160 std::recursive_mutex getMetadataLock_; 161 }; 162 } // namespace OHOS::AVSession 163 #endif // OHOS_AVSESSION_CONTROLLER_STUB_H