• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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