/* * Copyright (c) 2022-2024 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 OHOS_AVSESSION_CONTROLLER_STUB_H #define OHOS_AVSESSION_CONTROLLER_STUB_H #include #include "iavsession_controller.h" #include "iremote_stub.h" namespace OHOS::AVSession { class AVSessionControllerStub : public IRemoteStub { public: int32_t OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option) override; int32_t RegisterCallback(const std::shared_ptr& callback) override { return 0; } int64_t GetRealPlaybackPosition() override { return 0; } bool IsDestroy() override { return true; } private: int32_t HandleRegisterCallbackInner(MessageParcel& data, MessageParcel& reply); int32_t HandleDestroy(MessageParcel& data, MessageParcel& reply); int32_t HandleGetAVCallState(MessageParcel& data, MessageParcel& reply); int32_t HandleGetAVCallMetaData(MessageParcel& data, MessageParcel& reply); int32_t HandleGetAVPlaybackState(MessageParcel& data, MessageParcel& reply); int32_t HandleSendControlCommand(MessageParcel& data, MessageParcel& reply); int32_t HandleSendCommonCommand(MessageParcel& data, MessageParcel& reply); int32_t HandleGetAVMetaData(MessageParcel& data, MessageParcel& reply); int32_t HandleGetAVQueueItems(MessageParcel& data, MessageParcel& reply); int32_t HandleGetAVQueueTitle(MessageParcel& data, MessageParcel& reply); int32_t HandleSkipToQueueItem(MessageParcel& data, MessageParcel& reply); int32_t HandleGetExtras(MessageParcel& data, MessageParcel& reply); int32_t HandleSendAVKeyEvent(MessageParcel& data, MessageParcel& reply); int32_t HandleGetLaunchAbility(MessageParcel& data, MessageParcel& reply); int32_t HandleGetValidCommands(MessageParcel& data, MessageParcel& reply); int32_t HandleSetAVCallMetaFilter(MessageParcel& data, MessageParcel& reply); int32_t HandleSetAVCallStateFilter(MessageParcel& data, MessageParcel& reply); int32_t HandleSetMetaFilter(MessageParcel& data, MessageParcel& reply); int32_t HandleSetPlaybackFilter(MessageParcel& data, MessageParcel& reply); int32_t HandleIsSessionActive(MessageParcel& data, MessageParcel& reply); int32_t HandleGetSessionId(MessageParcel& data, MessageParcel& reply); static bool CheckInterfaceToken(MessageParcel& data); static void DoMetadataImgCleanInStub(AVMetaData& data); static int32_t DoMetadataGetReplyInStub(AVMetaData& metaData, MessageParcel& reply); using HandlerFunc = std::function; std::map handlers = { {CONTROLLER_CMD_REGISTER_CALLBACK, [this](MessageParcel& data, MessageParcel& reply) { return HandleRegisterCallbackInner(data, reply); }}, {CONTROLLER_CMD_DESTROY, [this](MessageParcel& data, MessageParcel& reply) { return HandleDestroy(data, reply); }}, {CONTROLLER_CMD_GET_AV_PLAYBACK_STATE, [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVPlaybackState(data, reply); }}, {CONTROLLER_CMD_GET_AV_META_DATA, [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVMetaData(data, reply); }}, {CONTROLLER_CMD_SEND_AV_KEYEVENT, [this](MessageParcel& data, MessageParcel& reply) { return HandleSendAVKeyEvent(data, reply); }}, {CONTROLLER_CMD_GET_LAUNCH_ABILITY, [this](MessageParcel& data, MessageParcel& reply) { return HandleGetLaunchAbility(data, reply); }}, {CONTROLLER_CMD_GET_VALID_COMMANDS, [this](MessageParcel& data, MessageParcel& reply) { return HandleGetValidCommands(data, reply); }}, {CONTROLLER_CMD_SEND_CONTROL_COMMAND, [this](MessageParcel& data, MessageParcel& reply) { return HandleSendControlCommand(data, reply); }}, {CONTROLLER_CMD_SEND_COMMON_COMMAND, [this](MessageParcel& data, MessageParcel& reply) { return HandleSendCommonCommand(data, reply); }}, {CONTROLLER_CMD_SET_META_FILTER, [this](MessageParcel& data, MessageParcel& reply) { return HandleSetMetaFilter(data, reply); }}, {CONTROLLER_CMD_SET_PLAYBACK_FILTER, [this](MessageParcel& data, MessageParcel& reply) { return HandleSetPlaybackFilter(data, reply); }}, {CONTROLLER_CMD_IS_SESSION_ACTIVE, [this](MessageParcel& data, MessageParcel& reply) { return HandleIsSessionActive(data, reply); }}, {CONTROLLER_CMD_GET_SESSION_ID, [this](MessageParcel& data, MessageParcel& reply) { return HandleGetSessionId(data, reply); }}, {CONTROLLER_CMD_GET_AV_QUEUE_ITEMS, [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVQueueItems(data, reply); }}, {CONTROLLER_CMD_GET_AV_QUEUE_TITLE, [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVQueueTitle(data, reply); }}, {CONTROLLER_CMD_SKIP_TO_QUEUE_ITEM, [this](MessageParcel& data, MessageParcel& reply) { return HandleSkipToQueueItem(data, reply); }}, {CONTROLLER_CMD_GET_EXTRAS, [this](MessageParcel& data, MessageParcel& reply) { return HandleGetExtras(data, reply); }}, {CONTROLLER_CMD_GET_AVCALL_META_DATA, [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVCallMetaData(data, reply); }}, {CONTROLLER_CMD_SET_AVCALL_META_FILTER, [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVCallMetaFilter(data, reply); }}, {CONTROLLER_CMD_GET_AVCALL_STATE, [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVCallState(data, reply); }}, {CONTROLLER_CMD_SET_AVCALL_STATE_FILTER, [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVCallStateFilter(data, reply); }} }; std::map mapCodeToFuncNameXCollie = { {CONTROLLER_CMD_REGISTER_CALLBACK, "HandleRegisterCallbackInner"}, {CONTROLLER_CMD_DESTROY, "HandleDestroy"}, {CONTROLLER_CMD_GET_AV_PLAYBACK_STATE, "HandleGetAVPlaybackState"}, {CONTROLLER_CMD_GET_AV_META_DATA, "HandleGetAVMetaData"}, {CONTROLLER_CMD_SEND_AV_KEYEVENT, "HandleSendAVKeyEvent"}, {CONTROLLER_CMD_GET_LAUNCH_ABILITY, "HandleGetLaunchAbility"}, {CONTROLLER_CMD_GET_VALID_COMMANDS, "HandleGetValidCommands"}, {CONTROLLER_CMD_SEND_CONTROL_COMMAND, "HandleSendControlCommand"}, {CONTROLLER_CMD_SEND_COMMON_COMMAND, "HandleSendCommonCommand"}, {CONTROLLER_CMD_SET_META_FILTER, "HandleSetMetaFilter"}, {CONTROLLER_CMD_SET_PLAYBACK_FILTER, "HandleSetPlaybackFilter"}, {CONTROLLER_CMD_IS_SESSION_ACTIVE, "HandleIsSessionActive"}, {CONTROLLER_CMD_GET_SESSION_ID, "HandleGetSessionId"}, {CONTROLLER_CMD_GET_AV_QUEUE_ITEMS, "HandleGetAVQueueItems"}, {CONTROLLER_CMD_GET_AV_QUEUE_TITLE, "HandleGetAVQueueTitle"}, {CONTROLLER_CMD_SKIP_TO_QUEUE_ITEM, "HandleSkipToQueueItem"}, {CONTROLLER_CMD_GET_EXTRAS, "HandleGetExtras"}, {CONTROLLER_CMD_GET_AVCALL_META_DATA, "HandleGetAVCallMetaData"}, {CONTROLLER_CMD_SET_AVCALL_META_FILTER, "HandleSetAVCallMetaFilter"}, {CONTROLLER_CMD_GET_AVCALL_STATE, "HandleGetAVCallState"}, {CONTROLLER_CMD_SET_AVCALL_STATE_FILTER, "HandleSetAVCallStateFilter"} }; const size_t defaultIpcCapacity = 1048576; // Increase the IPC default capacity(200K) to 1M std::recursive_mutex getMetadataLock_; }; } // namespace OHOS::AVSession #endif // OHOS_AVSESSION_CONTROLLER_STUB_H