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 HandleGetExtrasWithEvent(MessageParcel& data, MessageParcel& reply); 69 70 int32_t HandleSendAVKeyEvent(MessageParcel& data, MessageParcel& reply); 71 72 int32_t HandleGetLaunchAbility(MessageParcel& data, MessageParcel& reply); 73 74 int32_t HandleGetValidCommands(MessageParcel& data, MessageParcel& reply); 75 76 int32_t HandleSetAVCallMetaFilter(MessageParcel& data, MessageParcel& reply); 77 78 int32_t HandleSetAVCallStateFilter(MessageParcel& data, MessageParcel& reply); 79 80 int32_t HandleSetMetaFilter(MessageParcel& data, MessageParcel& reply); 81 82 int32_t HandleSetPlaybackFilter(MessageParcel& data, MessageParcel& reply); 83 84 int32_t HandleIsSessionActive(MessageParcel& data, MessageParcel& reply); 85 86 int32_t HandleGetSessionId(MessageParcel& data, MessageParcel& reply); 87 88 static bool CheckInterfaceToken(MessageParcel& data); 89 90 virtual void DoMetadataImgClean(AVMetaData& data) = 0; 91 92 static int32_t DoMetadataGetReplyInStub(AVMetaData& metaData, MessageParcel& reply); 93 94 using HandlerFunc = std::function<int32_t(MessageParcel&, MessageParcel&)>; 95 std::map<uint32_t, HandlerFunc> handlers = { 96 {CONTROLLER_CMD_REGISTER_CALLBACK, 97 [this](MessageParcel& data, MessageParcel& reply) { return HandleRegisterCallbackInner(data, reply); }}, 98 {CONTROLLER_CMD_DESTROY, 99 [this](MessageParcel& data, MessageParcel& reply) { return HandleDestroy(data, reply); }}, 100 {CONTROLLER_CMD_GET_AV_PLAYBACK_STATE, 101 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVPlaybackState(data, reply); }}, 102 {CONTROLLER_CMD_GET_AV_META_DATA, 103 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVMetaData(data, reply); }}, 104 {CONTROLLER_CMD_SEND_AV_KEYEVENT, 105 [this](MessageParcel& data, MessageParcel& reply) { return HandleSendAVKeyEvent(data, reply); }}, 106 {CONTROLLER_CMD_GET_LAUNCH_ABILITY, 107 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetLaunchAbility(data, reply); }}, 108 {CONTROLLER_CMD_GET_VALID_COMMANDS, 109 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetValidCommands(data, reply); }}, 110 {CONTROLLER_CMD_SEND_CONTROL_COMMAND, 111 [this](MessageParcel& data, MessageParcel& reply) { return HandleSendControlCommand(data, reply); }}, 112 {CONTROLLER_CMD_SEND_COMMON_COMMAND, 113 [this](MessageParcel& data, MessageParcel& reply) { return HandleSendCommonCommand(data, reply); }}, 114 {CONTROLLER_CMD_SET_META_FILTER, 115 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetMetaFilter(data, reply); }}, 116 {CONTROLLER_CMD_SET_PLAYBACK_FILTER, 117 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetPlaybackFilter(data, reply); }}, 118 {CONTROLLER_CMD_IS_SESSION_ACTIVE, 119 [this](MessageParcel& data, MessageParcel& reply) { return HandleIsSessionActive(data, reply); }}, 120 {CONTROLLER_CMD_GET_SESSION_ID, 121 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetSessionId(data, reply); }}, 122 {CONTROLLER_CMD_GET_AV_QUEUE_ITEMS, 123 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVQueueItems(data, reply); }}, 124 {CONTROLLER_CMD_GET_AV_QUEUE_TITLE, 125 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVQueueTitle(data, reply); }}, 126 {CONTROLLER_CMD_SKIP_TO_QUEUE_ITEM, 127 [this](MessageParcel& data, MessageParcel& reply) { return HandleSkipToQueueItem(data, reply); }}, 128 {CONTROLLER_CMD_GET_EXTRAS, 129 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetExtras(data, reply); }}, 130 {CONTROLLER_CMD_GET_EXTRAS_WITH_EVENT, 131 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetExtrasWithEvent(data, reply); }}, 132 {CONTROLLER_CMD_GET_AVCALL_META_DATA, 133 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVCallMetaData(data, reply); }}, 134 {CONTROLLER_CMD_SET_AVCALL_META_FILTER, 135 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVCallMetaFilter(data, reply); }}, 136 {CONTROLLER_CMD_GET_AVCALL_STATE, 137 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVCallState(data, reply); }}, 138 {CONTROLLER_CMD_SET_AVCALL_STATE_FILTER, 139 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVCallStateFilter(data, reply); }} 140 }; 141 std::map<uint32_t, std::string> mapCodeToFuncNameXCollie = { 142 {CONTROLLER_CMD_REGISTER_CALLBACK, "HandleRegisterCallbackInner"}, 143 {CONTROLLER_CMD_DESTROY, "HandleDestroy"}, 144 {CONTROLLER_CMD_GET_AV_PLAYBACK_STATE, "HandleGetAVPlaybackState"}, 145 {CONTROLLER_CMD_GET_AV_META_DATA, "HandleGetAVMetaData"}, 146 {CONTROLLER_CMD_SEND_AV_KEYEVENT, "HandleSendAVKeyEvent"}, 147 {CONTROLLER_CMD_GET_LAUNCH_ABILITY, "HandleGetLaunchAbility"}, 148 {CONTROLLER_CMD_GET_VALID_COMMANDS, "HandleGetValidCommands"}, 149 {CONTROLLER_CMD_SEND_CONTROL_COMMAND, "HandleSendControlCommand"}, 150 {CONTROLLER_CMD_SEND_COMMON_COMMAND, "HandleSendCommonCommand"}, 151 {CONTROLLER_CMD_SET_META_FILTER, "HandleSetMetaFilter"}, 152 {CONTROLLER_CMD_SET_PLAYBACK_FILTER, "HandleSetPlaybackFilter"}, 153 {CONTROLLER_CMD_IS_SESSION_ACTIVE, "HandleIsSessionActive"}, 154 {CONTROLLER_CMD_GET_SESSION_ID, "HandleGetSessionId"}, 155 {CONTROLLER_CMD_GET_AV_QUEUE_ITEMS, "HandleGetAVQueueItems"}, 156 {CONTROLLER_CMD_GET_AV_QUEUE_TITLE, "HandleGetAVQueueTitle"}, 157 {CONTROLLER_CMD_SKIP_TO_QUEUE_ITEM, "HandleSkipToQueueItem"}, 158 {CONTROLLER_CMD_GET_EXTRAS, "HandleGetExtras"}, 159 {CONTROLLER_CMD_GET_EXTRAS_WITH_EVENT, "HandleGetExtrasWithEvent"}, 160 {CONTROLLER_CMD_GET_AVCALL_META_DATA, "HandleGetAVCallMetaData"}, 161 {CONTROLLER_CMD_SET_AVCALL_META_FILTER, "HandleSetAVCallMetaFilter"}, 162 {CONTROLLER_CMD_GET_AVCALL_STATE, "HandleGetAVCallState"}, 163 {CONTROLLER_CMD_SET_AVCALL_STATE_FILTER, "HandleSetAVCallStateFilter"} 164 }; 165 const size_t defaultIpcCapacity = 1048576; // Increase the IPC default capacity(200K) to 1M 166 std::recursive_mutex getMetadataLock_; 167 }; 168 } // namespace OHOS::AVSession 169 #endif // OHOS_AVSESSION_CONTROLLER_STUB_H