• 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_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