}
};
+MediaControllerServer.prototype.getAllClientsInfo = function() {
+ var nativeResult = native_.callSync('MediaControllerServer_getAllClientsInfo');
+ if (native_.isFailure(nativeResult)) {
+ throw native_.getErrorObject(nativeResult);
+ }
+
+ var results = native_.getResultObject(nativeResult);
+ if (!type_.isArray(results)) {
+ throw new WebAPIException(WebAPIException.UNKNOWN_ERR);
+ }
+
+ var clientsInfo = [];
+ for (var index in results) {
+ clientsInfo.push(new MediaControllerClientInfo(results[index]));
+ }
+
+ return clientsInfo;
+};
+
+function MediaControllerClientInfo(data) {
+ Object.defineProperties(this, {
+ name: {
+ value: data.name,
+ writable: false,
+ enumerable: true
+ }
+ });
+}
+
function MediaControllerClient() {}
MediaControllerClient.prototype.findServers = function(successCallback, errorCallback) {
REGISTER_SYNC("MediaControllerServer_setDisplayRotationAbility",
MediaControllerServerSetDisplayRotationAbility);
REGISTER_SYNC("MediaControllerServer_setSimpleAbility", MediaControllerServerSetSimpleAbility);
+ REGISTER_SYNC("MediaControllerServer_getAllClientsInfo", MediaControllerServerGetAllClientsInfo);
// client
REGISTER_SYNC("MediaControllerManager_getClient", MediaControllerManagerGetClient);
ReportSuccess(out);
}
+void MediaControllerInstance::MediaControllerServerGetAllClientsInfo(const picojson::value& args,
+ picojson::object& out) {
+ ScopeLogger();
+ if (!server_) {
+ LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occured."), &out,
+ ("Failed: server_"));
+ return;
+ }
+
+ picojson::array clientsInfo;
+ auto result = server_->GetAllClientsInfo(&clientsInfo);
+ if (!result) {
+ LogAndReportError(result, &out);
+ return;
+ }
+
+ ReportSuccess(picojson::value(clientsInfo), out);
+}
+
void MediaControllerInstance::MediaControllerManagerGetClient(const picojson::value& args,
picojson::object& out) {
ScopeLogger();
void MediaControllerServerSetDisplayRotationAbility(const picojson::value& args,
picojson::object& out);
void MediaControllerServerSetSimpleAbility(const picojson::value& args, picojson::object& out);
+ void MediaControllerServerGetAllClientsInfo(const picojson::value& args, picojson::object& out);
// client
void MediaControllerManagerGetClient(const picojson::value& args, picojson::object& out);
return PlatformResult(ErrorCode::NO_ERROR);
}
+PlatformResult MediaControllerServer::GetAllClientsInfo(picojson::array* clients_info) {
+ ScopeLogger();
+
+ auto client_cb = [](const char* name, void* data) -> bool {
+ auto clients = static_cast<picojson::array*>(data);
+ picojson::object client_info = {{"name", picojson::value(name)}};
+ clients->push_back(picojson::value(client_info));
+ return true;
+ };
+
+ int ret = mc_server_foreach_client(handle_, client_cb, clients_info);
+ if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
+ return LogAndCreateResult(
+ ErrorCode::UNKNOWN_ERR, "Iterating over active clients failed",
+ ("mc_server_foreach_client() error: %d, message: %s", ret, get_error_message(ret)));
+ }
+
+ return PlatformResult(ErrorCode::NO_ERROR);
+}
+
} // namespace mediacontroller
} // namespace extension
const std::string& support_str);
common::PlatformResult SetSimpleAbility(const std::string& ability_type,
const std::string& support_str);
+
+ common::PlatformResult GetAllClientsInfo(picojson::array* clientsInfo);
+
// subtitles
common::PlatformResult UpdateSubtitlesEnabled(bool enabled);
common::PlatformResult SetSubtitlesChangeRequestListener(const JsonCallback& callback);