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_STUB_H 17 #define OHOS_AVSESSION_STUB_H 18 19 #include <map> 20 #include "iav_session.h" 21 #include "iremote_stub.h" 22 #include "want_agent.h" 23 #include "want_params.h" 24 #include "avsession_log.h" 25 #include "avsession_errors.h" 26 27 #ifdef CASTPLUS_CAST_ENGINE_ENABLE 28 #include "avcast_controller.h" 29 #endif 30 31 namespace OHOS::AVSession { 32 class AVSessionStub : public IRemoteStub<IAVSession> { 33 public: 34 int32_t OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option) override; 35 RegisterCallback(const std::shared_ptr<AVSessionCallback> & callback)36 int32_t RegisterCallback(const std::shared_ptr<AVSessionCallback>& callback) override 37 { 38 return ERR_NONE; 39 } 40 GetController()41 std::shared_ptr<AVSessionController> GetController() override 42 { 43 return nullptr; 44 } 45 46 #ifdef CASTPLUS_CAST_ENGINE_ENABLE GetAVCastController()47 std::shared_ptr<AVCastController> GetAVCastController() override 48 { 49 return nullptr; 50 } 51 #endif 52 53 private: 54 int32_t HandleGetSessionId(MessageParcel& data, MessageParcel& reply); 55 56 int32_t HandleGetSessionType(MessageParcel& data, MessageParcel& reply); 57 58 int32_t HandleSetAVCallMetaData(MessageParcel& data, MessageParcel& reply); 59 60 int32_t HandleSetAVCallState(MessageParcel& data, MessageParcel& reply); 61 62 int32_t HandleGetAVMetaData(MessageParcel& data, MessageParcel& reply); 63 64 int32_t HandleSetAVMetaData(MessageParcel& data, MessageParcel& reply); 65 66 int32_t HandleGetAVPlaybackState(MessageParcel& data, MessageParcel& reply); 67 68 int32_t HandleSetAVPlaybackState(MessageParcel& data, MessageParcel& reply); 69 70 int32_t HandleSetLaunchAbility(MessageParcel& data, MessageParcel& reply); 71 72 int32_t HandleGetExtras(MessageParcel& data, MessageParcel& reply); 73 74 int32_t HandleSetExtras(MessageParcel& data, MessageParcel& reply); 75 76 int32_t HandleGetController(MessageParcel& data, MessageParcel& reply); 77 78 #ifdef CASTPLUS_CAST_ENGINE_ENABLE 79 int32_t HandleGetAVCastController(MessageParcel& data, MessageParcel& reply); 80 81 int32_t HandleReleaseCast(MessageParcel& data, MessageParcel& reply); 82 83 int32_t HandleStartCastDisplayListener(MessageParcel& data, MessageParcel& reply); 84 85 int32_t HandleStopCastDisplayListener(MessageParcel& data, MessageParcel& reply); 86 87 int32_t HandleGetAllCastDisplays(MessageParcel& data, MessageParcel& reply); 88 #endif 89 90 int32_t HandleRegisterCallbackInner(MessageParcel& data, MessageParcel& reply); 91 92 int32_t HandleActivate(MessageParcel& data, MessageParcel& reply); 93 94 int32_t HandleDeactivate(MessageParcel& data, MessageParcel& reply); 95 96 int32_t HandleIsActive(MessageParcel& data, MessageParcel& reply); 97 98 int32_t HandleDestroy(MessageParcel& data, MessageParcel& reply); 99 100 int32_t HandleAddSupportCommand(MessageParcel& data, MessageParcel& reply); 101 102 int32_t HandleDeleteSupportCommand(MessageParcel& data, MessageParcel& reply); 103 104 int32_t HandleSetSessionEvent(MessageParcel& data, MessageParcel& reply); 105 106 int32_t HandleUpdateAVQueueInfoEvent(MessageParcel& data, MessageParcel& reply); 107 108 int32_t HandleGetAVQueueItems(MessageParcel& data, MessageParcel& reply); 109 110 int32_t HandleSetAVQueueItems(MessageParcel& data, MessageParcel& reply); 111 112 int32_t HandleGetAVQueueTitle(MessageParcel& data, MessageParcel& reply); 113 114 int32_t HandleSetAVQueueTitle(MessageParcel& data, MessageParcel& reply); 115 116 int32_t HandleSendCustomData(MessageParcel& data, MessageParcel& reply); 117 118 static bool CheckInterfaceToken(MessageParcel& data); 119 120 using HandlerFunc = std::function<int32_t(MessageParcel&, MessageParcel&)>; 121 std::map<uint32_t, HandlerFunc> handlers = { 122 {SESSION_CMD_GET_SESSION_ID, 123 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetSessionId(data, reply); }}, 124 {SESSION_CMD_GET_SESSION_TYPE, 125 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetSessionType(data, reply); }}, 126 {SESSION_CMD_GET_META_DATA, 127 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVMetaData(data, reply); }}, 128 {SESSION_CMD_SET_META_DATA, 129 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVMetaData(data, reply); }}, 130 {SESSION_CMD_GET_PLAYBACK_STATE, 131 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVPlaybackState(data, reply); }}, 132 {SESSION_CMD_SET_PLAYBACK_STATE, 133 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVPlaybackState(data, reply); }}, 134 {SESSION_CMD_GET_QUEUE_ITEMS, 135 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVQueueItems(data, reply); }}, 136 {SESSION_CMD_SET_QUEUE_ITEMS, 137 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVQueueItems(data, reply); }}, 138 {SESSION_CMD_GET_QUEUE_TITLE, 139 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVQueueTitle(data, reply); }}, 140 {SESSION_CMD_SET_QUEUE_TITLE, 141 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVQueueTitle(data, reply); }}, 142 {SESSION_CMD_GET_EXTRAS, 143 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetExtras(data, reply); }}, 144 {SESSION_CMD_SET_EXTRAS, 145 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetExtras(data, reply); }}, 146 {SESSION_CMD_SET_LAUNCH_ABILITY, 147 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetLaunchAbility(data, reply); }}, 148 {SESSION_CMD_GET_CONTROLLER, 149 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetController(data, reply); }}, 150 {SESSION_CMD_SEND_CUSTOM_DATA, 151 [this](MessageParcel& data, MessageParcel& reply) { return HandleSendCustomData(data, reply); }}, 152 #ifdef CASTPLUS_CAST_ENGINE_ENABLE 153 {SESSION_CMD_GET_AVCAST_CONTROLLER, 154 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVCastController(data, reply); }}, 155 {SESSION_CMD_START_CAST_DISPLAY_LISTENER, 156 [this](MessageParcel& data, MessageParcel& reply) { return HandleStartCastDisplayListener(data, reply); }}, 157 {SESSION_CMD_STOP_CAST_DISPLAY_LISTENER, 158 [this](MessageParcel& data, MessageParcel& reply) { return HandleStopCastDisplayListener(data, reply); }}, 159 {SESSION_CMD_GET_ALL_CAST_DISPLAYS, 160 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAllCastDisplays(data, reply); }}, 161 #endif 162 {SESSION_CMD_REGISTER_CALLBACK, 163 [this](MessageParcel& data, MessageParcel& reply) { return HandleRegisterCallbackInner(data, reply); }}, 164 {SESSION_CMD_ACTIVATE, 165 [this](MessageParcel& data, MessageParcel& reply) { return HandleActivate(data, reply); }}, 166 {SESSION_CMD_DEACTIVATE, 167 [this](MessageParcel& data, MessageParcel& reply) { return HandleDeactivate(data, reply); }}, 168 {SESSION_CMD_ISACTIVE, 169 [this](MessageParcel& data, MessageParcel& reply) { return HandleIsActive(data, reply); }}, 170 {SESSION_CMD_DESTROY, 171 [this](MessageParcel& data, MessageParcel& reply) { return HandleDestroy(data, reply); }}, 172 {SESSION_CMD_ADD_SUPPORT_COMMAND, 173 [this](MessageParcel& data, MessageParcel& reply) { return HandleAddSupportCommand(data, reply); }}, 174 {SESSION_CMD_DELETE_SUPPORT_COMMAND, 175 [this](MessageParcel& data, MessageParcel& reply) { return HandleDeleteSupportCommand(data, reply); }}, 176 {SESSION_CMD_SET_SESSION_EVENT, 177 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetSessionEvent(data, reply); }}, 178 {SESSION_CMD_UPDATE_QUEUE_INFO, 179 [this](MessageParcel& data, MessageParcel& reply) { return HandleUpdateAVQueueInfoEvent(data, reply); }}, 180 #ifdef CASTPLUS_CAST_ENGINE_ENABLE 181 {SESSION_CMD_RELEASE_CAST, 182 [this](MessageParcel& data, MessageParcel& reply) { return HandleReleaseCast(data, reply); }}, 183 #endif 184 {SESSION_CMD_SET_AVCALL_META_DATA, 185 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVCallMetaData(data, reply); }}, 186 {SESSION_CMD_SET_AVCALL_STATE, 187 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVCallState(data, reply); }} 188 }; 189 std::map<uint32_t, std::string> mapCodeToFuncNameXCollie = { 190 {SESSION_CMD_GET_SESSION_ID, "HandleGetSessionId"}, 191 {SESSION_CMD_GET_SESSION_TYPE, "HandleGetSessionType"}, 192 {SESSION_CMD_GET_META_DATA, "HandleGetAVMetaData"}, 193 {SESSION_CMD_SET_META_DATA, "HandleSetAVMetaData"}, 194 {SESSION_CMD_GET_PLAYBACK_STATE, "HandleGetAVPlaybackState"}, 195 {SESSION_CMD_SET_PLAYBACK_STATE, "HandleSetAVPlaybackState"}, 196 {SESSION_CMD_GET_QUEUE_ITEMS, "HandleGetAVQueueItems"}, 197 {SESSION_CMD_SET_QUEUE_ITEMS, "HandleSetAVQueueItems"}, 198 {SESSION_CMD_GET_QUEUE_TITLE, "HandleGetAVQueueTitle"}, 199 {SESSION_CMD_SET_QUEUE_TITLE, "HandleSetAVQueueTitle"}, 200 {SESSION_CMD_GET_EXTRAS, "HandleGetExtras"}, 201 {SESSION_CMD_SET_EXTRAS, "HandleSetExtras"}, 202 {SESSION_CMD_SET_LAUNCH_ABILITY, "HandleSetLaunchAbility"}, 203 {SESSION_CMD_GET_CONTROLLER, "HandleGetController"}, 204 {SESSION_CMD_SEND_CUSTOM_DATA, "HandleSendCustomData"}, 205 #ifdef CASTPLUS_CAST_ENGINE_ENABLE 206 {SESSION_CMD_GET_AVCAST_CONTROLLER, "HandleGetAVCastController"}, 207 {SESSION_CMD_START_CAST_DISPLAY_LISTENER, "HandleStartCastDisplayListener"}, 208 {SESSION_CMD_STOP_CAST_DISPLAY_LISTENER, "HandleStopCastDisplayListener"}, 209 {SESSION_CMD_GET_ALL_CAST_DISPLAYS, "HandleGetAllCastDisplays"}, 210 #endif 211 {SESSION_CMD_REGISTER_CALLBACK, "HandleRegisterCallbackInner"}, 212 {SESSION_CMD_ACTIVATE, "HandleActivate"}, 213 {SESSION_CMD_DEACTIVATE, "HandleDeactivate"}, 214 {SESSION_CMD_ISACTIVE, "HandleIsActive"}, 215 {SESSION_CMD_DESTROY, "HandleDestroy"}, 216 {SESSION_CMD_ADD_SUPPORT_COMMAND, "HandleAddSupportCommand"}, 217 {SESSION_CMD_DELETE_SUPPORT_COMMAND, "HandleDeleteSupportCommand"}, 218 {SESSION_CMD_SET_SESSION_EVENT, "HandleSetSessionEvent"}, 219 {SESSION_CMD_UPDATE_QUEUE_INFO, "HandleUpdateAVQueueInfoEvent"}, 220 #ifdef CASTPLUS_CAST_ENGINE_ENABLE 221 {SESSION_CMD_RELEASE_CAST, "HandleReleaseCast"}, 222 #endif 223 {SESSION_CMD_SET_AVCALL_META_DATA, "HandleSetAVCallMetaData"}, 224 {SESSION_CMD_SET_AVCALL_STATE, "HandleSetAVCallState"} 225 }; 226 227 const size_t defaultIpcCapacity = 1048576; // Increase the IPC default capacity(200K) to 1M 228 }; 229 } 230 #endif // OHOS_AVSESSION_STUB_H 231