2 * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #ifndef MEDIACONTROLLER_MEDIACONTROLLER_INSTANCE_H_
18 #define MEDIACONTROLLER_MEDIACONTROLLER_INSTANCE_H_
23 #include "common/extension.h"
24 #include "mediacontroller/mediacontroller_client.h"
25 #include "mediacontroller/mediacontroller_server.h"
28 namespace mediacontroller {
30 class MediaControllerInstance : public common::ParsedInstance {
32 MediaControllerInstance();
33 virtual ~MediaControllerInstance();
37 void MediaControllerManagerCreateServer(const picojson::value& args, picojson::object& out);
38 void MediaControllerServerUpdatePlaybackState(const picojson::value& args, picojson::object& out);
39 void MediaControllerServerUpdatePlaybackPosition(const picojson::value& args,
40 picojson::object& out);
41 void MediaControllerServerUpdatePlaybackAgeRating(const picojson::value& args,
42 picojson::object& out);
43 void MediaControllerServerUpdateRepeatMode(const picojson::value& args, picojson::object& out);
44 void MediaControllerServerUpdateRepeatState(const picojson::value& args, picojson::object& out);
45 void MediaControllerServerUpdateShuffleMode(const picojson::value& args, picojson::object& out);
46 void MediaControllerServerUpdatePlaybackContentType(const picojson::value& args,
47 picojson::object& out);
48 void MediaControllerServerUpdateMetadata(const picojson::value& args, picojson::object& out);
49 void MediaControllerServerAddChangeRequestPlaybackInfoListener(const picojson::value& args,
50 picojson::object& out);
51 void MediaControllerServerRemoveChangeRequestPlaybackInfoListener(const picojson::value& args,
52 picojson::object& out);
54 void MediaControllerServerAddSearchRequestListener(const picojson::value& args,
55 picojson::object& out);
56 void MediaControllerServerRemoveSearchRequestListener(const picojson::value& args,
57 picojson::object& out);
59 void MediaControllerServerReplyCommand(const picojson::value& args, picojson::object& out);
60 void MediaControllerServerAddCommandListener(const picojson::value& args, picojson::object& out);
61 void MediaControllerServerRemoveCommandListener(const picojson::value& args,
62 picojson::object& out);
63 void MediaControllerServerCreatePlaylist(const picojson::value& args, picojson::object& out);
64 void MediaControllerServerSavePlaylist(const picojson::value& args, picojson::object& out);
65 void MediaControllerServerDeletePlaylist(const picojson::value& args, picojson::object& out);
66 void MediaControllerServerUpdatePlaybackItem(const picojson::value& args, picojson::object& out);
67 void MediaControllerServerGetAllPlaylists(const picojson::value& args, picojson::object& out);
68 void MediaControllerServerUpdateIconURI(const picojson::value& args, picojson::object& out);
69 void MediaControllerServerSavePlaybackAbilities(const picojson::value& args,
70 picojson::object& out);
71 void MediaControllerServerSetDisplayModeAbility(const picojson::value& args,
72 picojson::object& out);
73 void MediaControllerServerSetDisplayRotationAbility(const picojson::value& args,
74 picojson::object& out);
75 void MediaControllerServerSetSimpleAbility(const picojson::value& args, picojson::object& out);
76 void MediaControllerServerGetAllClientsInfo(const picojson::value& args, picojson::object& out);
79 void MediaControllerClientInfoSendEvent(const picojson::value& args, picojson::object& out);
82 void MediaControllerManagerGetClient(const picojson::value& args, picojson::object& out);
83 void MediaControllerClientFindServers(const picojson::value& args, picojson::object& out);
84 void MediaControllerClientGetLatestServerInfo(const picojson::value& args, picojson::object& out);
85 void MediaControllerClientGetPlaybackInfo(const picojson::value& args, picojson::object& out);
86 void MediaControllerClientGetPlaybackAbility(const picojson::value& args, picojson::object& out);
87 void MediaControllerClientGetDisplayModeAbility(const picojson::value& args,
88 picojson::object& out);
89 void MediaControllerClientGetDisplayRotationAbility(const picojson::value& args,
90 picojson::object& out);
91 void MediaControllerClientGetSimpleAbility(const picojson::value& args, picojson::object& out);
92 void MediaControllerClientAddAbilityChangeListener(const picojson::value& args,
93 picojson::object& out);
94 void MediaControllerClientRemoveAbilityChangeListener(const picojson::value& args,
95 picojson::object& out);
96 void MediaControllerClientFindSubscribedServers(const picojson::value& args,
97 picojson::object& out);
98 void MediaControllerClientSetCustomEventListener(const picojson::value& args,
99 picojson::object& out);
100 void MediaControllerClientUnsetCustomEventListener(const picojson::value& args,
101 picojson::object& out);
102 void MediaControllerClientSendEventReply(const picojson::value& args, picojson::object& out);
105 void MediaControllerServerInfoSendPlaybackState(const picojson::value& args,
106 picojson::object& out);
107 void MediaControllerServerInfoSendPlaybackPosition(const picojson::value& args,
108 picojson::object& out);
109 void MediaControllerServerInfoSendRepeatMode(const picojson::value& args, picojson::object& out);
110 void MediaControllerServerInfoSendRepeatState(const picojson::value& args, picojson::object& out);
111 void MediaControllerServerInfoSendShuffleMode(const picojson::value& args, picojson::object& out);
112 void MediaControllerServerInfoSendSearchRequest(const picojson::value& args,
113 picojson::object& out);
114 void MediaControllerServerInfoSendCommand(const picojson::value& args, picojson::object& out);
115 void MediaControllerServerInfoAddServerStatusChangeListener(const picojson::value& args,
116 picojson::object& out);
117 void MediaControllerServerInfoRemoveServerStatusChangeListener(const picojson::value& args,
118 picojson::object& out);
119 void MediaControllerServerInfoAddPlaybackInfoChangeListener(const picojson::value& args,
120 picojson::object& out);
121 void MediaControllerServerInfoRemovePlaybackInfoChangeListener(const picojson::value& args,
122 picojson::object& out);
123 void MediaControllerServerInfoSendPlaybackItem(const picojson::value& args,
124 picojson::object& out);
125 void MediaControllerServerInfoAddPlaylistUpdatedListener(const picojson::value& args,
126 picojson::object& out);
127 void MediaControllerServerInfoRemovePlaylistUpdatedListener(const picojson::value& args,
128 picojson::object& out);
129 void MediaControllerServerInfoGetAllPlaylists(const picojson::value& args, picojson::object& out);
130 void MediaControllerServerInfoGetIconURI(const picojson::value& args, picojson::object& out);
131 void MediaControllerServerInfoPlaybackInfoSendPlaybackAction(const picojson::value& args,
132 picojson::object& out);
133 void MediaControllerServerInfoPlaybackInfoSendPlaybackPosition(const picojson::value& args,
134 picojson::object& out);
135 void MediaControllerServerInfoPlaybackInfoSendShuffleMode(const picojson::value& args,
136 picojson::object& out);
137 void MediaControllerServerInfoPlaybackInfoSendRepeatState(const picojson::value& args,
138 picojson::object& out);
141 void MediaControllerAbilitiesInfoSubscribe(const picojson::value& args, picojson::object& out);
142 void MediaControllerAbilitiesInfoUnsubscribe(const picojson::value& args, picojson::object& out);
145 void MediaControllerPlaylistAddItem(const picojson::value& args, picojson::object& out);
146 void MediaControllerPlaylistGetItems(const picojson::value& args, picojson::object& out);
149 void MediaControllerSubtitlesUpdateEnabled(const picojson::value& args, picojson::object& out);
150 void MediaControllerSubtitlesAddChangeRequestListener(const picojson::value& args,
151 picojson::object& out);
152 void MediaControllerSubtitlesRemoveChangeRequestListener(const picojson::value& args,
153 picojson::object& out);
154 void MediaControllerSubtitlesInfoGetEnabled(const picojson::value& args, picojson::object& out);
155 void MediaControllerSubtitlesInfoSendRequest(const picojson::value& args, picojson::object& out);
156 void MediaControllerSubtitlesInfoAddModeChangeListener(const picojson::value& args,
157 picojson::object& out);
158 void MediaControllerSubtitlesInfoRemoveModeChangeListener(const picojson::value& args,
159 picojson::object& out);
162 void MediaControllerMode360UpdateEnabled(const picojson::value& args, picojson::object& out);
163 void MediaControllerMode360AddChangeRequestListener(const picojson::value& args,
164 picojson::object& out);
165 void MediaControllerMode360RemoveChangeRequestListener(const picojson::value& args,
166 picojson::object& out);
167 void MediaControllerMode360InfoGetEnabled(const picojson::value& args, picojson::object& out);
168 void MediaControllerMode360InfoSendRequest(const picojson::value& args, picojson::object& out);
169 void MediaControllerMode360InfoAddModeChangeListener(const picojson::value& args,
170 picojson::object& out);
171 void MediaControllerMode360InfoRemoveModeChangeListener(const picojson::value& args,
172 picojson::object& out);
175 void MediaControllerDisplayModeUpdateType(const picojson::value& args, picojson::object& out);
176 void MediaControllerDisplayModeAddChangeRequestListener(const picojson::value& args,
177 picojson::object& out);
178 void MediaControllerDisplayModeRemoveChangeRequestListener(const picojson::value& args,
179 picojson::object& out);
180 void MediaControllerDisplayModeInfoGetType(const picojson::value& args, picojson::object& out);
181 void MediaControllerDisplayModeInfoSendType(const picojson::value& args, picojson::object& out);
182 void MediaControllerDisplayModeInfoAddModeChangeListener(const picojson::value& args,
183 picojson::object& out);
184 void MediaControllerDisplayModeInfoRemoveModeChangeListener(const picojson::value& args,
185 picojson::object& out);
188 void MediaControllerDisplayRotationUpdate(const picojson::value& args, picojson::object& out);
189 void MediaControllerDisplayRotationAddChangeRequestListener(const picojson::value& args,
190 picojson::object& out);
191 void MediaControllerDisplayRotationRemoveChangeRequestListener(const picojson::value& args,
192 picojson::object& out);
193 void MediaControllerDisplayRotationInfoGet(const picojson::value& args, picojson::object& out);
194 void MediaControllerDisplayRotationInfoSend(const picojson::value& args, picojson::object& out);
195 void MediaControllerDisplayRotationInfoAddChangeListener(const picojson::value& args,
196 picojson::object& out);
197 void MediaControllerDisplayRotationInfoRemoveChangeListener(const picojson::value& args,
198 picojson::object& out);
201 void MediaControllerPlaylistsGetPlaylist(const picojson::value& args, picojson::object& out);
204 void MediaControllerPlaylistsInfoSendPlaybackItem(const picojson::value& args,
205 picojson::object& out);
206 void MediaControllerPlaylistsInfoGetPlaylist(const picojson::value& args, picojson::object& out);
208 std::shared_ptr<MediaControllerClient> client_;
209 std::shared_ptr<MediaControllerServer> server_;
210 std::map<std::string, PlaylistHandleMap> server_playlist_map_;
211 // This mutex is used to guard playlist usage by server_
212 // Some of the calls are async, so it needs to be guarded
213 std::mutex playlist_map_mutex_;
216 } // namespace mediacontroller
217 } // namespace extension
219 #endif // MEDIACONTROLLER_MEDIACONTROLLER_INSTANCE_H_