1 /* 2 * Copyright (c) 2023-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_AVCAST_CONTROLLER_CALLBACK_STUB_H 17 #define OHOS_AVCAST_CONTROLLER_CALLBACK_STUB_H 18 19 #include <map> 20 #include "iavcast_controller_callback.h" 21 #include "iremote_stub.h" 22 23 namespace OHOS::AVSession { 24 class AVCastControllerCallbackStub : public IRemoteStub<IAVCastControllerCallback> { 25 public: 26 int32_t OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option) override; 27 28 private: 29 30 int32_t HandleOnStateChange(MessageParcel& data, MessageParcel& reply); 31 32 int32_t HandleOnMediaItemChange(MessageParcel& data, MessageParcel& reply); 33 34 int32_t HandleOnPlayNext(MessageParcel& data, MessageParcel& reply); 35 36 int32_t HandleOnPlayPrevious(MessageParcel& data, MessageParcel& reply); 37 38 int32_t HandleOnSeekDone(MessageParcel& data, MessageParcel& reply); 39 40 int32_t HandleOnVideoSizeChange(MessageParcel& data, MessageParcel& reply); 41 42 int32_t HandleOnPlayerError(MessageParcel& data, MessageParcel& reply); 43 44 int32_t HandleOnEndOfStream(MessageParcel& data, MessageParcel& reply); 45 46 int32_t HandleOnPlayRequest(MessageParcel& data, MessageParcel& reply); 47 48 int32_t HandleOnKeyRequest(MessageParcel& data, MessageParcel& reply); 49 50 int32_t HandleOnCastValidCommandChanged(MessageParcel& data, MessageParcel& reply); 51 52 static bool CheckInterfaceToken(MessageParcel& data); 53 54 using HandlerFunc = std::function<int32_t(MessageParcel&, MessageParcel&)>; 55 std::map<uint32_t, HandlerFunc> handlers = { 56 {CAST_CONTROLLER_CMD_ON_CAST_PLAYBACK_STATE_CHANGE, 57 [this](MessageParcel& data, MessageParcel& reply) { return HandleOnStateChange(data, reply); }}, 58 {CAST_CONTROLLER_CMD_ON_MEDIA_ITEM_CHANGE, 59 [this](MessageParcel& data, MessageParcel& reply) { return HandleOnMediaItemChange(data, reply); }}, 60 {CAST_CONTROLLER_CMD_ON_PLAY_NEXT, 61 [this](MessageParcel& data, MessageParcel& reply) { return HandleOnPlayNext(data, reply); }}, 62 {CAST_CONTROLLER_CMD_ON_PLAY_PREVIOUS, 63 [this](MessageParcel& data, MessageParcel& reply) { return HandleOnPlayPrevious(data, reply); }}, 64 {CAST_CONTROLLER_CMD_ON_SEEK_DONE, 65 [this](MessageParcel& data, MessageParcel& reply) { return HandleOnSeekDone(data, reply); }}, 66 {CAST_CONTROLLER_CMD_ON_VIDEO_SIZE_CHANGE, 67 [this](MessageParcel& data, MessageParcel& reply) { return HandleOnVideoSizeChange(data, reply); }}, 68 {CAST_CONTROLLER_CMD_ON_ERROR, 69 [this](MessageParcel& data, MessageParcel& reply) { return HandleOnPlayerError(data, reply); }}, 70 {CAST_CONTROLLER_CMD_ON_END_OF_STREAM, 71 [this](MessageParcel& data, MessageParcel& reply) { return HandleOnEndOfStream(data, reply); }}, 72 {CAST_CONTROLLER_CMD_ON_PLAY_REQUEST, 73 [this](MessageParcel& data, MessageParcel& reply) { return HandleOnPlayRequest(data, reply); }}, 74 {CAST_CONTROLLER_CMD_ON_KEY_REQUEST, 75 [this](MessageParcel& data, MessageParcel& reply) { return HandleOnKeyRequest(data, reply); }}, 76 {CAST_CONTROLLER_CMD_ON_VALID_COMMAND_CHANGED, 77 [this](MessageParcel& data, MessageParcel& reply) { return HandleOnCastValidCommandChanged(data, reply); }} 78 }; 79 }; 80 } 81 #endif // OHOS_AVCAST_CONTROLLER_CALLBACK_STUB_H 82