[MediaController] Code refactoring
authorJiyong Min <jiyong.min@samsung.com>
Wed, 8 Mar 2017 09:47:08 +0000 (18:47 +0900)
committerhj kim <backto.kim@samsung.com>
Wed, 15 Mar 2017 01:34:25 +0000 (18:34 -0700)
 - The error handling was changed by using validator.
 - Unnecessary type-casting was removed.
 - Trailing spaces was removed.
 - Add privillege description.

Change-Id: I3c0f7e239213f56af2d5ce3720ef81c9891138cd
Signed-off-by: jiyong.min <jiyong.min@samsung.com>
(cherry picked from commit 4a4777304e4885f5f000e80b7710ca9d1d3ccde1)

14 files changed:
src/Tizen.Multimedia/Interop/Interop.MediaController.cs
src/Tizen.Multimedia/MediaController/CustomCommandReplyEventArgs.cs
src/Tizen.Multimedia/MediaController/MediaControllerClient.cs
src/Tizen.Multimedia/MediaController/MediaControllerEnums.cs
src/Tizen.Multimedia/MediaController/MediaControllerError.cs [moved from src/Tizen.Multimedia/MediaController/MediaControllerErrorFactory.cs with 56% similarity]
src/Tizen.Multimedia/MediaController/MediaControllerMetadata.cs
src/Tizen.Multimedia/MediaController/MediaControllerPlayback.cs
src/Tizen.Multimedia/MediaController/MediaControllerServer.cs
src/Tizen.Multimedia/MediaController/MetadataUpdatedEventArgs.cs
src/Tizen.Multimedia/MediaController/PlaybackStateCommandEventArgs.cs
src/Tizen.Multimedia/MediaController/PlaybackUpdatedEventArgs.cs
src/Tizen.Multimedia/MediaController/RepeatModeUpdatedEventArgs.cs
src/Tizen.Multimedia/MediaController/ServerInformation.cs
src/Tizen.Multimedia/MediaController/ShuffleModeUpdatedEventArgs.cs

index c370e8a..6644d86 100755 (executable)
 using System;
 using System.Runtime.InteropServices;
 using Tizen.Applications;
+using Tizen.Multimedia.MediaController;
 
 internal static partial class Interop
 {
-       internal static partial class MediaControllerClient
-       {
-               [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-               internal delegate void ServerUpdatedCallback(string serverName, int serverState, IntPtr userData);
+    internal static partial class MediaControllerClient
+    {
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void ServerUpdatedCallback(string serverName, MediaControllerServerState serverState, IntPtr userData);
 
-               [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-               internal delegate void PlaybackUpdatedCallback(string serverName, IntPtr playback, IntPtr userData);
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void PlaybackUpdatedCallback(string serverName, IntPtr playback, IntPtr userData);
 
-               [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-               internal delegate void MetadataUpdatedCallback(string serverName, IntPtr metadata, IntPtr userData);
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void MetadataUpdatedCallback(string serverName, IntPtr metadata, IntPtr userData);
 
-               [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-               internal delegate void ShuffleModeUpdatedCallback(string serverName, int shuffleMode, IntPtr userData);
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void ShuffleModeUpdatedCallback(string serverName, MediaControllerShuffleMode shuffleMode, IntPtr userData);
 
-               [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-               internal delegate void RepeatModeUpdatedCallback(string serverName, int repeatMode, IntPtr userData);
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void RepeatModeUpdatedCallback(string serverName, MediaControllerRepeatMode repeatMode, IntPtr userData);
 
-               [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-               internal delegate void CommandReplyRecievedCallback(string serverName, int result, IntPtr bundle, IntPtr userData);
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void CommandReplyRecievedCallback(string serverName, int result, IntPtr bundle, IntPtr userData);
 
-               [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-               internal delegate bool SubscribedServerCallback(string serverName, IntPtr userData);
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate bool SubscribedServerCallback(string serverName, IntPtr userData);
 
-               [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-               internal delegate bool ActivatedServerCallback(string serverName, IntPtr userData);
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate bool ActivatedServerCallback(string serverName, IntPtr userData);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_create")]
-               internal static extern int Create(out IntPtr handle);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_create")]
+        internal static extern MediaControllerError Create(out IntPtr handle);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_destroy")]
-               internal static extern int Destroy(IntPtr handle);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_destroy")]
+        internal static extern MediaControllerError Destroy(IntPtr handle);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_server_update_cb")]
-               internal static extern int SetServerUpdatedCb(IntPtr handle, ServerUpdatedCallback callback, IntPtr userData);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_server_update_cb")]
+        internal static extern MediaControllerError SetServerUpdatedCb(IntPtr handle, ServerUpdatedCallback callback, IntPtr userData);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_server_update_cb")]
-               internal static extern int UnsetServerUpdatedCb(IntPtr handle);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_server_update_cb")]
+        internal static extern MediaControllerError UnsetServerUpdatedCb(IntPtr handle);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_playback_update_cb")]
-               internal static extern int SetPlaybackUpdatedCb(IntPtr handle, PlaybackUpdatedCallback callback, IntPtr userData);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_playback_update_cb")]
+        internal static extern MediaControllerError SetPlaybackUpdatedCb(IntPtr handle, PlaybackUpdatedCallback callback, IntPtr userData);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_playback_update_cb")]
-               internal static extern int UnsetPlaybackUpdatedCb(IntPtr handle);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_playback_update_cb")]
+        internal static extern MediaControllerError UnsetPlaybackUpdatedCb(IntPtr handle);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_metadata_update_cb")]
-               internal static extern int SetMetadataUpdatedCb(IntPtr handle, MetadataUpdatedCallback callback, IntPtr userData);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_metadata_update_cb")]
+        internal static extern MediaControllerError SetMetadataUpdatedCb(IntPtr handle, MetadataUpdatedCallback callback, IntPtr userData);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_metadata_update_cb")]
-               internal static extern int UnsetMetadataUpdatedCb(IntPtr handle);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_metadata_update_cb")]
+        internal static extern MediaControllerError UnsetMetadataUpdatedCb(IntPtr handle);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_shuffle_mode_update_cb")]
-               internal static extern int SetShuffleModeUpdatedCb(IntPtr handle, ShuffleModeUpdatedCallback callback, IntPtr userData);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_shuffle_mode_update_cb")]
+        internal static extern MediaControllerError SetShuffleModeUpdatedCb(IntPtr handle, ShuffleModeUpdatedCallback callback, IntPtr userData);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_shuffle_mode_update_cb")]
-               internal static extern int UnsetShuffleModeUpdatedCb(IntPtr handle);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_shuffle_mode_update_cb")]
+        internal static extern MediaControllerError UnsetShuffleModeUpdatedCb(IntPtr handle);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_repeat_mode_update_cb")]
-               internal static extern int SetRepeatModeUpdatedCb(IntPtr handle, RepeatModeUpdatedCallback callback, IntPtr userData);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_repeat_mode_update_cb")]
+        internal static extern MediaControllerError SetRepeatModeUpdatedCb(IntPtr handle, RepeatModeUpdatedCallback callback, IntPtr userData);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_repeat_mode_update_cb")]
-               internal static extern int UnsetRepeatModeUpdatedCb(IntPtr handle);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_repeat_mode_update_cb")]
+        internal static extern MediaControllerError UnsetRepeatModeUpdatedCb(IntPtr handle);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_subscribe")]
-               internal static extern int Subscribe(IntPtr handle, int subscriptionType, string serverName);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_subscribe")]
+        internal static extern MediaControllerError Subscribe(IntPtr handle, MediaControllerSubscriptionType subscriptionType, string serverName);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unsubscribe")]
-               internal static extern int Unsubscribe(IntPtr handle, int subscriptionType, string serverName);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unsubscribe")]
+        internal static extern MediaControllerError Unsubscribe(IntPtr handle, MediaControllerSubscriptionType subscriptionType, string serverName);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_playback_state")]
-               internal static extern int GetPlaybackState(IntPtr playback, out int state);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_playback_state")]
+        internal static extern MediaControllerError GetPlaybackState(IntPtr playback, out MediaControllerPlaybackState state);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_playback_position")]
-               internal static extern int GetPlaybackPosition(IntPtr playback, out ulong position);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_playback_position")]
+        internal static extern MediaControllerError GetPlaybackPosition(IntPtr playback, out ulong position);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_destroy_playback")]
-               internal static extern int DestroyPlayback(IntPtr playback);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_destroy_playback")]
+        internal static extern MediaControllerError DestroyPlayback(IntPtr playback);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_metadata")]
-               internal static extern int GetMetadata(IntPtr metadata, int attribute, out string value);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_metadata")]
+        internal static extern MediaControllerError GetMetadata(IntPtr metadata, MediaControllerAttributes attribute, out string value);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_destroy_metadata")]
-               internal static extern int DestroyMetadata(IntPtr metadata);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_destroy_metadata")]
+        internal static extern MediaControllerError DestroyMetadata(IntPtr metadata);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_latest_server_info")]
-               internal static extern int GetLatestServer(IntPtr handle, out string serverName, out int serverState);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_latest_server_info")]
+        internal static extern MediaControllerError GetLatestServer(IntPtr handle, out string serverName, out MediaControllerServerState serverState);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_playback_info")]
-               internal static extern int GetServerPlayback(IntPtr handle, string serverName, out IntPtr playback);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_playback_info")]
+        internal static extern MediaControllerError GetServerPlayback(IntPtr handle, string serverName, out IntPtr playback);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_metadata")]
-               internal static extern int GetServerMetadata(IntPtr handle, string serverName, out IntPtr metadata);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_metadata")]
+        internal static extern MediaControllerError GetServerMetadata(IntPtr handle, string serverName, out IntPtr metadata);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_shuffle_mode")]
-               internal static extern int GetServerShuffleMode(IntPtr handle, string serverName, out int mode);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_shuffle_mode")]
+        internal static extern MediaControllerError GetServerShuffleMode(IntPtr handle, string serverName, out MediaControllerShuffleMode mode);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_repeat_mode")]
-               internal static extern int GetServerRepeatMode(IntPtr handle, string serverName, out int mode);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_repeat_mode")]
+        internal static extern MediaControllerError GetServerRepeatMode(IntPtr handle, string serverName, out MediaControllerRepeatMode mode);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_send_playback_state_command")]
-               internal static extern int SendPlaybackStateCommand(IntPtr handle, string serverName, int state);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_send_playback_state_command")]
+        internal static extern MediaControllerError SendPlaybackStateCommand(IntPtr handle, string serverName, MediaControllerPlaybackState state);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_send_custom_command")]
-               internal static extern int SendCustomCommand(IntPtr handle, string serverName, string command, SafeBundleHandle bundle, CommandReplyRecievedCallback callback, IntPtr userData);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_send_custom_command")]
+        internal static extern MediaControllerError SendCustomCommand(IntPtr handle, string serverName, string command, SafeBundleHandle bundle, CommandReplyRecievedCallback callback, IntPtr userData);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_foreach_server_subscribed")]
-               internal static extern int ForeachSubscribedServer(IntPtr handle, int subscriptionType, SubscribedServerCallback callback, IntPtr userData);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_foreach_server_subscribed")]
+        internal static extern MediaControllerError ForeachSubscribedServer(IntPtr handle, MediaControllerSubscriptionType subscriptionType, SubscribedServerCallback callback, IntPtr userData);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_client_foreach_server")]
-               internal static extern int ForeachActivatedServer(IntPtr handle, ActivatedServerCallback callback, IntPtr userData);
-       }
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_client_foreach_server")]
+        internal static extern MediaControllerError ForeachActivatedServer(IntPtr handle, ActivatedServerCallback callback, IntPtr userData);
+    }
 
-       internal static partial class MediaControllerServer
-       {
-               [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-               internal delegate void PlaybackStateCommandRecievedCallback(string clientName, int state, IntPtr userData);
+    internal static partial class MediaControllerServer
+    {
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void PlaybackStateCommandRecievedCallback(string clientName, MediaControllerPlaybackState state, IntPtr userData);
 
-               [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-               internal delegate void CustomCommandRecievedCallback(string clientName, string command, IntPtr bundle, IntPtr userData);
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void CustomCommandRecievedCallback(string clientName, string command, IntPtr bundle, IntPtr userData);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_server_create")]
-               internal static extern int Create(out IntPtr handle);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_server_create")]
+        internal static extern MediaControllerError Create(out IntPtr handle);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_server_destroy")]
-               internal static extern int Destroy(IntPtr handle);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_server_destroy")]
+        internal static extern MediaControllerError Destroy(IntPtr handle);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_state")]
-               internal static extern int SetPlaybackState(IntPtr handle, int state);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_state")]
+        internal static extern MediaControllerError SetPlaybackState(IntPtr handle, MediaControllerPlaybackState state);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_position")]
-               internal static extern int SetPlaybackPosition(IntPtr handle, ulong position);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_position")]
+        internal static extern MediaControllerError SetPlaybackPosition(IntPtr handle, ulong position);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_playback_info")]
-               internal static extern int UpdatePlayback(IntPtr handle);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_playback_info")]
+        internal static extern MediaControllerError UpdatePlayback(IntPtr handle);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_metadata")]
-               internal static extern int SetMetadata(IntPtr handle, int attribute, string value);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_metadata")]
+        internal static extern MediaControllerError SetMetadata(IntPtr handle, MediaControllerAttributes attribute, string value);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_metadata")]
-               internal static extern int UpdateMetadata(IntPtr handle);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_metadata")]
+        internal static extern MediaControllerError UpdateMetadata(IntPtr handle);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_shuffle_mode")]
-               internal static extern int UpdateShuffleMode(IntPtr handle, int mode);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_shuffle_mode")]
+        internal static extern MediaControllerError UpdateShuffleMode(IntPtr handle, MediaControllerShuffleMode mode);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_repeat_mode")]
-               internal static extern int UpdateRepeatMode(IntPtr handle, int mode);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_repeat_mode")]
+        internal static extern MediaControllerError UpdateRepeatMode(IntPtr handle, MediaControllerRepeatMode mode);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_state_command_received_cb")]
-               internal static extern int SetPlaybackStateCmdRecvCb(IntPtr handle, PlaybackStateCommandRecievedCallback callback, IntPtr userData);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_state_command_received_cb")]
+        internal static extern MediaControllerError SetPlaybackStateCmdRecvCb(IntPtr handle, PlaybackStateCommandRecievedCallback callback, IntPtr userData);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_playback_state_command_received_cb")]
-               internal static extern int UnsetPlaybackStateCmdRecvCb(IntPtr handle);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_playback_state_command_received_cb")]
+        internal static extern MediaControllerError UnsetPlaybackStateCmdRecvCb(IntPtr handle);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_custom_command_received_cb")]
-               internal static extern int SetCustomCmdRecvCb(IntPtr handle, CustomCommandRecievedCallback callback, IntPtr userData);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_custom_command_received_cb")]
+        internal static extern MediaControllerError SetCustomCmdRecvCb(IntPtr handle, CustomCommandRecievedCallback callback, IntPtr userData);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_custom_command_received_cb")]
-               internal static extern int UnsetCustomCmdRecvCb(IntPtr handle);
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_custom_command_received_cb")]
+        internal static extern MediaControllerError UnsetCustomCmdRecvCb(IntPtr handle);
 
-               [DllImport(Libraries.MediaController, EntryPoint = "mc_server_send_command_reply")]
-               internal static extern int SendCommandReply(IntPtr handle, string clientName, int result, SafeBundleHandle bundle);
-       }
+        [DllImport(Libraries.MediaController, EntryPoint = "mc_server_send_command_reply")]
+        internal static extern MediaControllerError SendCommandReply(IntPtr handle, string clientName, int result, SafeBundleHandle bundle);
+    }
 }
index 5bce0c4..10d79fd 100755 (executable)
 
 using System;
 using System.Collections.Generic;
-using System.Runtime.InteropServices;
 using System.Threading.Tasks;
 using Tizen.Applications;
 
 namespace Tizen.Multimedia.MediaController
-{
-
+{\r
+\r
     /// <summary>
     /// The MediaControllerClient class provides APIs required for media-controller-client.
     /// </summary>
+    /// <privilege>\r
+    /// http://tizen.org/privilege/mediacontroller.client\r
+    /// </privilege>
     /// <remarks>
     /// The MediaControllerClient APIs provides functions to get media information from server.
     /// </remarks>
@@ -51,9 +53,11 @@ namespace Tizen.Multimedia.MediaController
         /// The constructor of MediaControllerClient class.
         /// </summary>
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
+        /// <exception cref="UnauthorizedAccessException">Thrown when the access is denied for media controller client</exception>
         public MediaControllerClient ()
         {
-            Interop.MediaControllerClient.Create (out _handle);
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.Create(out _handle), "Create client failed");
         }
 
         ~MediaControllerClient ()
@@ -236,102 +240,81 @@ namespace Tizen.Multimedia.MediaController
 
         /// <summary>
         /// gets latest server information </summary>
+        /// <returns>The name and state of the latest media controller server application: ServerInformation object</returns>
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
         public ServerInformation GetLatestServer()
         {
-            MediaControllerError res = MediaControllerError.None;
-            string _name;
-            int _state;
+            string _name = null;
+            MediaControllerServerState _state = MediaControllerServerState.None;
 
-            res = (MediaControllerError)Interop.MediaControllerClient.GetLatestServer(_handle, out _name, out _state);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Latest server failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Latest server failed");
-            }
-
-            ServerInformation _serverInfo = new ServerInformation (_name, (MediaControllerServerState)_state);
-            return _serverInfo;
+            MediaControllerValidator.ThrowIfError(\r
+                Interop.MediaControllerClient.GetLatestServer(_handle, out _name, out _state), "Get Latest server failed");\r
+\r
+            return new ServerInformation(_name, (MediaControllerServerState)_state);\r
         }
 
         /// <summary>
         /// gets playback information for specific server </summary>
         /// <param name="serverName"> Server Name  </param>
+        /// <returns>The playback state and playback position of the specific media controller server application:MediaControllerPlayback object</returns>
         /// <exception cref="ArgumentException">Thrown when an invalid argument is used</exception>
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
         public MediaControllerPlayback GetPlayback(String serverName)
         {
-            MediaControllerError res = MediaControllerError.None;
             IntPtr _playbackHandle = IntPtr.Zero;
 
-            res = (MediaControllerError)Interop.MediaControllerClient.GetServerPlayback(_handle, serverName, out _playbackHandle);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Playback handle failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Playback handle failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.GetServerPlayback(_handle, serverName, out _playbackHandle), "Get Playback handle failed");
 
-            MediaControllerPlayback _playback = new MediaControllerPlayback (_playbackHandle);
-            return _playback;
+            return new MediaControllerPlayback (_playbackHandle);
         }
 
         /// <summary>
         /// gets metadata information for specific server </summary>
         /// <param name="serverName"> Server Name  </param>
+        /// <returns>The metadata information of the specific media controller server application:MediaControllerMetadata object</returns>
         /// <exception cref="ArgumentException">Thrown when an invalid argument is used</exception>
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
         public MediaControllerMetadata GetMetadata(String serverName)
         {
-            MediaControllerError res = MediaControllerError.None;
             IntPtr _metadataHandle = IntPtr.Zero;
 
-            res = (MediaControllerError)Interop.MediaControllerClient.GetServerMetadata(_handle, serverName, out _metadataHandle);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Playback handle failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Playback handle failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.GetServerMetadata(_handle, serverName, out _metadataHandle), "Get Metadata handle failed");
 
-            MediaControllerMetadata _metadata = new MediaControllerMetadata (_metadataHandle);
-            return _metadata;
+            return new MediaControllerMetadata (_metadataHandle);
         }
 
         /// <summary>
         /// gets shuffle mode for specific server </summary>
         /// <param name="serverName"> Server Name  </param>
+        /// <returns>The shuffle mode of the specific media controller server application:MediaControllerShuffleMode enum</returns>
         /// <exception cref="ArgumentException">Thrown when an invalid argument is used</exception>
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
         public MediaControllerShuffleMode GetShuffleMode(String serverName)
         {
-            MediaControllerError res = MediaControllerError.None;
-            int _shuffleMode;
-            res = (MediaControllerError)Interop.MediaControllerClient.GetServerShuffleMode(_handle, serverName, out _shuffleMode);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Playback handle failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Playback handle failed");
-            }
+            MediaControllerShuffleMode _shuffleMode = MediaControllerShuffleMode.Off;
 
-            return (MediaControllerShuffleMode)_shuffleMode;
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.GetServerShuffleMode(_handle, serverName, out _shuffleMode), "Get ShuffleMode failed");
+
+            return _shuffleMode;
         }
 
         /// <summary>
         /// gets repeat mode for specific server </summary>
         /// <param name="serverName"> Server Name  </param>
+        /// <returns>The repeat mode of the specific media controller server application:MediaControllerRepeatMode enum</returns>
         /// <exception cref="ArgumentException">Thrown when an invalid argument is used</exception>
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
         public MediaControllerRepeatMode GetRepeatMode(String serverName)
         {
-            MediaControllerError res = MediaControllerError.None;
-            int _repeatMode;
-            res = (MediaControllerError)Interop.MediaControllerClient.GetServerRepeatMode(_handle, serverName, out _repeatMode);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Playback handle failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Playback handle failed");
-            }
+            MediaControllerRepeatMode _repeatMode = MediaControllerRepeatMode.Off;
 
-            return (MediaControllerRepeatMode)_repeatMode;
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.GetServerRepeatMode(_handle, serverName, out _repeatMode), "Get RepeatMode failed");
+
+            return _repeatMode;
         }
 
         /// <summary>
@@ -342,13 +325,8 @@ namespace Tizen.Multimedia.MediaController
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
         public void SendPlaybackStateCommand(string serverName, MediaControllerPlaybackState state)
         {
-            MediaControllerError res = MediaControllerError.None;
-            res = (MediaControllerError)Interop.MediaControllerClient.SendPlaybackStateCommand(_handle, serverName, (int)state);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Send playback state command failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Send playback state command failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.SendPlaybackStateCommand(_handle, serverName, state), "Send playback state command failed");
         }
 
         /// <summary>
@@ -360,13 +338,9 @@ namespace Tizen.Multimedia.MediaController
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
         public void SendCustomCommand(string serverName, string command, Bundle bundle)
         {
-            MediaControllerError res = MediaControllerError.None;
-            res = (MediaControllerError)Interop.MediaControllerClient.SendCustomCommand(_handle, serverName, command, bundle.SafeBundleHandle, _customcommandReplyCallback, IntPtr.Zero);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Send custom command failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Send custom command failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.SendCustomCommand(_handle, serverName, command, bundle.SafeBundleHandle, _customcommandReplyCallback, IntPtr.Zero),
+                "Send custom command failed");
         }
 
         /// <summary>
@@ -376,13 +350,8 @@ namespace Tizen.Multimedia.MediaController
         /// <exception cref="ArgumentException">Thrown when an invalid argument is used</exception>
         public void Subscribe(MediaControllerSubscriptionType type, string serverName)
         {
-            MediaControllerError res = MediaControllerError.None;
-            res = (MediaControllerError)Interop.MediaControllerClient.Subscribe(_handle, (int)type, serverName);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Subscribe failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Subscribe failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.Subscribe(_handle, type, serverName), "Subscribe failed");
         }
 
         /// <summary>
@@ -392,17 +361,13 @@ namespace Tizen.Multimedia.MediaController
         /// <exception cref="ArgumentException">Thrown when an invalid argument is used</exception>
         public void Unsubscribe(MediaControllerSubscriptionType type, string serverName)
         {
-            MediaControllerError res = MediaControllerError.None;
-            res = (MediaControllerError)Interop.MediaControllerClient.Unsubscribe(_handle, (int)type, serverName);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Unsubscribe failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Unsubscribe failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.Unsubscribe(_handle, type, serverName), "Unsubscribe failed");
         }
 
         /// <summary>
         /// gets activated server list </summary>
+        /// <returns>The list of activated media controller server applications: IEnumerable of string</returns>
         public Task<IEnumerable<string>> GetActivatedServerList()
         {
             var task = new TaskCompletionSource<IEnumerable<string>>();
@@ -416,13 +381,14 @@ namespace Tizen.Multimedia.MediaController
         /// <summary>
         /// gets subscribed server list </summary>
         /// <param name="subscriptionType"> Subscription Type  </param>
+        /// <returns>The list of subscribed media controller server applications: IEnumerable of string</returns>
         /// <exception cref="ArgumentException">Thrown when an invalid argument is used</exception>
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
         public Task<IEnumerable<string>> GetSubscribedServerList(MediaControllerSubscriptionType subscriptionType)
         {
             var task = new TaskCompletionSource<IEnumerable<string>>();
 
-            List<string> collectionList = ForEachSubscribedServer(_handle, (int)subscriptionType);
+            List<string> collectionList = ForEachSubscribedServer(_handle, subscriptionType);
             task.TrySetResult((IEnumerable<string>)collectionList);
 
             return task.Task;
@@ -430,9 +396,9 @@ namespace Tizen.Multimedia.MediaController
 
         private void RegisterServerUpdatedEvent()
         {
-            _serverUpdatedCallback = (string serverName, int serverState, IntPtr userData) =>
+            _serverUpdatedCallback = (string serverName, MediaControllerServerState serverState, IntPtr userData) =>
             {
-                ServerUpdatedEventArgs eventArgs = new ServerUpdatedEventArgs(serverName, (MediaControllerServerState)serverState);
+                ServerUpdatedEventArgs eventArgs = new ServerUpdatedEventArgs(serverName, serverState);
                 _serverUpdated?.Invoke(this, eventArgs);
             };
             Interop.MediaControllerClient.SetServerUpdatedCb(_handle, _serverUpdatedCallback, IntPtr.Zero);
@@ -475,18 +441,15 @@ namespace Tizen.Multimedia.MediaController
 
         private void RegisterShuffleModeUpdatedEvent()
         {
-            MediaControllerError res = MediaControllerError.None;
-            _shufflemodeUpdatedCallback = (string serverName, int shuffleMode, IntPtr userData) =>
+            _shufflemodeUpdatedCallback = (string serverName, MediaControllerShuffleMode shuffleMode, IntPtr userData) =>
             {
-                ShuffleModeUpdatedEventArgs eventArgs = new ShuffleModeUpdatedEventArgs(serverName, (MediaControllerShuffleMode)shuffleMode);
+                ShuffleModeUpdatedEventArgs eventArgs = new ShuffleModeUpdatedEventArgs(serverName, shuffleMode);
                 _shufflemodeUpdated?.Invoke(this, eventArgs);
             };
-            res = (MediaControllerError)Interop.MediaControllerClient.SetShuffleModeUpdatedCb(_handle, _shufflemodeUpdatedCallback, IntPtr.Zero);
-            if (res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set ShuffleModeUpdated callback failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set ShuffleModeUpdated callback failed");
-            }
+
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.SetShuffleModeUpdatedCb(_handle, _shufflemodeUpdatedCallback, IntPtr.Zero),
+                "Set ShuffleModeUpdated callback failed");
         }
 
         private void UnregisterShuffleModeUpdatedEvent()
@@ -496,18 +459,15 @@ namespace Tizen.Multimedia.MediaController
 
         private void RegisterRepeatModeUpdatedEvent()
         {
-            MediaControllerError res = MediaControllerError.None;
-            _repeatmodeUpdatedCallback = (string serverName, int repeatMode, IntPtr userData) =>
+            _repeatmodeUpdatedCallback = (string serverName, MediaControllerRepeatMode repeatMode, IntPtr userData) =>
             {
-                RepeatModeUpdatedEventArgs eventArgs = new RepeatModeUpdatedEventArgs(serverName, (MediaControllerRepeatMode)repeatMode);
+                RepeatModeUpdatedEventArgs eventArgs = new RepeatModeUpdatedEventArgs(serverName, repeatMode);
                 _repeatmodeUpdated?.Invoke(this, eventArgs);
             };
-            res = (MediaControllerError)Interop.MediaControllerClient.SetRepeatModeUpdatedCb(_handle, _repeatmodeUpdatedCallback, IntPtr.Zero);
-            if (res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set RepeatModeUpdated callback failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set RepeatModeUpdated callback failed");
-            }
+
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.SetRepeatModeUpdatedCb(_handle, _repeatmodeUpdatedCallback, IntPtr.Zero),
+                "Set RepeatModeUpdated callback failed");
         }
 
         private void UnregisterRepeatModeUpdatedEvent()
@@ -515,9 +475,8 @@ namespace Tizen.Multimedia.MediaController
             Interop.MediaControllerClient.UnsetRepeatModeUpdatedCb(_handle);
         }
 
-        private static List<string> ForEachSubscribedServer(IntPtr handle, int subscriptionType)
+        private static List<string> ForEachSubscribedServer(IntPtr handle, MediaControllerSubscriptionType subscriptionType)
         {
-            MediaControllerError res = MediaControllerError.None;
             List<string> subscribedServerCollections = new List<string>();
 
             Interop.MediaControllerClient.SubscribedServerCallback serverCallback = (string serverName, IntPtr userData) =>
@@ -525,35 +484,30 @@ namespace Tizen.Multimedia.MediaController
                 subscribedServerCollections.Add (serverName);
                 return true;
             };
-            res = (MediaControllerError)Interop.MediaControllerClient.ForeachSubscribedServer (handle, subscriptionType, serverCallback, IntPtr.Zero);
-            if (res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Foreach Subscribed server failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Foreach Subscribed server failed");
-            }
+
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.ForeachSubscribedServer(handle, subscriptionType, serverCallback, IntPtr.Zero),
+                "Foreach Subscribed server failed");
+
             return subscribedServerCollections;
         }
 
         private static List<string> ForEachActivatedServer(IntPtr handle)
         {
-            MediaControllerError res = MediaControllerError.None;
             List<string> activatedServerCollections = new List<string>();
 
             Interop.MediaControllerClient.ActivatedServerCallback serverCallback = (string serverName, IntPtr userData) =>
             {
-                activatedServerCollections.Add (serverName);
+                activatedServerCollections.Add(serverName);\r
                 return true;
             };
-            res = (MediaControllerError)Interop.MediaControllerClient.ForeachActivatedServer (handle, serverCallback, IntPtr.Zero);
-            if (res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Foreach Activated server failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Foreach Activated server failed");
-            }
-            return activatedServerCollections;
-        }
 
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.ForeachActivatedServer(handle, serverCallback, IntPtr.Zero),
+                "Foreach Activated server failed");
 
+            return activatedServerCollections;
+        }
     }
 }
 
@@ -14,8 +14,8 @@
 * limitations under the License.
 */
 
-
 using System;
+using System.IO;
 using Tizen.Internals.Errors;
 
 namespace Tizen.Multimedia.MediaController
@@ -29,27 +29,27 @@ namespace Tizen.Multimedia.MediaController
         NoSpaceOnDevice = ErrorCode.FileNoSpaceOnDevice,
         PermissionDenied = ErrorCode.PermissionDenied,
     };
-    internal static class MediaControllerErrorFactory
+
+    internal static class MediaControllerValidator
     {
-        internal static void ThrowException(MediaControllerError errorCode, string errorMessage = null, string paramName = null)
+        internal static void ThrowIfError(MediaControllerError error, string errorMessage)
         {
-            MediaControllerError err = errorCode;
-            if(string.IsNullOrEmpty(errorMessage))
-            {
-                errorMessage = err.ToString();
-            }
-            switch(errorCode)
+            switch (error)
             {
-            case MediaControllerError.InvalidParameter:
-                throw new ArgumentException(errorMessage, paramName);
+                case MediaControllerError.InvalidParameter:
+                    throw new ArgumentException(errorMessage);
+
+                case MediaControllerError.OutOfMemory:
+                    throw new OutOfMemoryException(errorMessage);
+
+                case MediaControllerError.InvalidOperation:
+                    throw new InvalidOperationException(errorMessage);
 
-            case MediaControllerError.OutOfMemory:
-            case MediaControllerError.NoSpaceOnDevice:
-                throw new OutOfMemoryException(errorMessage);
+                case MediaControllerError.NoSpaceOnDevice:
+                    throw new IOException(errorMessage);
 
-            case MediaControllerError.InvalidOperation:
-            case MediaControllerError.PermissionDenied:
-                throw new InvalidOperationException(errorMessage);
+                case MediaControllerError.PermissionDenied:
+                    throw new UnauthorizedAccessException(errorMessage);
             }
         }
     }
index 7b1f421..2f8d584 100755 (executable)
@@ -29,10 +29,10 @@ namespace Tizen.Multimedia.MediaController
         /// </summary>
         public MediaControllerMetadata()
         {
+            // Do nothing
         }
 
-        internal MediaControllerMetadata(IntPtr _metadataHandle) {
-            MediaControllerError res = MediaControllerError.None;
+        internal MediaControllerMetadata(IntPtr _handle) {
             string _title;
             string _artist;
             string _album;
@@ -45,82 +45,50 @@ namespace Tizen.Multimedia.MediaController
             string _track_number;
             string _picture;
 
-            res = (MediaControllerError)Interop.MediaControllerClient.GetMetadata(_metadataHandle, (int)MediaControllerAttributes.Title, out _title);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Metadata failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Metadata failed");
-            }
-
-            res = (MediaControllerError)Interop.MediaControllerClient.GetMetadata(_metadataHandle, (int)MediaControllerAttributes.Artist, out _artist);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Metadata failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Metadata failed");
-            }
-
-            res = (MediaControllerError)Interop.MediaControllerClient.GetMetadata(_metadataHandle, (int)MediaControllerAttributes.Album, out _album);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Metadata failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Metadata failed");
-            }
-
-            res = (MediaControllerError)Interop.MediaControllerClient.GetMetadata(_metadataHandle, (int)MediaControllerAttributes.Author, out _author);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Metadata failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Metadata failed");
-            }
-
-            res = (MediaControllerError)Interop.MediaControllerClient.GetMetadata(_metadataHandle, (int)MediaControllerAttributes.Genre, out _genre);
-            if (res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Metadata failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Metadata failed");
-            }
-
-            res = (MediaControllerError)Interop.MediaControllerClient.GetMetadata(_metadataHandle, (int)MediaControllerAttributes.Duration, out _duration);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Metadata failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Metadata failed");
-            }
-
-            res = (MediaControllerError)Interop.MediaControllerClient.GetMetadata(_metadataHandle, (int)MediaControllerAttributes.Date, out _date);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Metadata failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Metadata failed");
-            }
-
-            res = (MediaControllerError)Interop.MediaControllerClient.GetMetadata(_metadataHandle, (int)MediaControllerAttributes.Copyright, out _copyright);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Metadata failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Metadata failed");
-            }
-
-            res = (MediaControllerError)Interop.MediaControllerClient.GetMetadata(_metadataHandle, (int)MediaControllerAttributes.Description, out _description);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Metadata failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Metadata failed");
-            }
-
-            res = (MediaControllerError)Interop.MediaControllerClient.GetMetadata(_metadataHandle, (int)MediaControllerAttributes.TrackNumber, out _track_number);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Metadata failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Metadata failed");
-            }
-
-            res = (MediaControllerError)Interop.MediaControllerClient.GetMetadata(_metadataHandle, (int)MediaControllerAttributes.Picture, out _picture);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Metadata failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Metadata failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                    Interop.MediaControllerClient.GetMetadata(_handle, MediaControllerAttributes.Title, out _title),
+                    "Get Title failed");
+
+            MediaControllerValidator.ThrowIfError(
+                    Interop.MediaControllerClient.GetMetadata(_handle, MediaControllerAttributes.Artist, out _artist),
+                    "Get Artist failed");
+
+            MediaControllerValidator.ThrowIfError(
+                    Interop.MediaControllerClient.GetMetadata(_handle, MediaControllerAttributes.Album, out _album),
+                    "Get Album failed");
+
+            MediaControllerValidator.ThrowIfError(
+                    Interop.MediaControllerClient.GetMetadata(_handle, MediaControllerAttributes.Author, out _author),
+                    "Get Author failed");
+
+            MediaControllerValidator.ThrowIfError(
+                    Interop.MediaControllerClient.GetMetadata(_handle, MediaControllerAttributes.Genre, out _genre),
+                    "Get Genre failed");
+
+            MediaControllerValidator.ThrowIfError(
+                    Interop.MediaControllerClient.GetMetadata(_handle, MediaControllerAttributes.Duration, out _duration),
+                    "Get Duration failed");
+
+            MediaControllerValidator.ThrowIfError(
+                    Interop.MediaControllerClient.GetMetadata(_handle, MediaControllerAttributes.Date, out _date),
+                    "Get Date failed");
+
+            MediaControllerValidator.ThrowIfError(
+                    Interop.MediaControllerClient.GetMetadata(_handle, MediaControllerAttributes.Copyright, out _copyright),
+                    "Get Copyright failed");
+
+            MediaControllerValidator.ThrowIfError(
+                    Interop.MediaControllerClient.GetMetadata(_handle, MediaControllerAttributes.Description, out _description),
+                    "Get Description failed");
+
+            MediaControllerValidator.ThrowIfError(
+                    Interop.MediaControllerClient.GetMetadata(_handle, MediaControllerAttributes.TrackNumber, out _track_number),
+                    "Get TrackNumber failed");
+
+            MediaControllerValidator.ThrowIfError(
+                    Interop.MediaControllerClient.GetMetadata(_handle, MediaControllerAttributes.Picture, out _picture),
+                    "Get Picture failed");
+
             Title = _title;
             Artist = _artist;
             Album = _album;
index 640808e..3fc10f9 100755 (executable)
@@ -32,26 +32,17 @@ namespace Tizen.Multimedia.MediaController
             Position = position;
         }
 
-        internal MediaControllerPlayback(IntPtr _playbackHandle) {
-            MediaControllerError res = MediaControllerError.None;
-            int state = 0;
+        internal MediaControllerPlayback(IntPtr _handle) {
+            MediaControllerPlaybackState state = MediaControllerPlaybackState.None;
             ulong position = 0L;
 
-            res = (MediaControllerError)Interop.MediaControllerClient.GetPlaybackState(_playbackHandle, out state);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Playback state failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Playback state failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.GetPlaybackState(_handle, out state), "Get Playback state failed");
 
-            res = (MediaControllerError)Interop.MediaControllerClient.GetPlaybackPosition(_playbackHandle, out position);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Get Playback position failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Get Playback position failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerClient.GetPlaybackPosition(_handle, out position), "Get Playback position failed");
 
-            State = (MediaControllerPlaybackState)state;
+            State = state;
             Position = position;
         }
 
index 1f18607..6870b2a 100755 (executable)
@@ -14,9 +14,7 @@
 * limitations under the License.
 */
 
-
 using System;
-using System.Runtime.InteropServices;
 using Tizen.Applications;
 
 namespace Tizen.Multimedia.MediaController
@@ -25,6 +23,9 @@ namespace Tizen.Multimedia.MediaController
     /// <summary>
     /// The MediaControllerServer class provides APIs required for media-controller-server.
     /// </summary>
+    /// <privilege>
+    /// http://tizen.org/privilege/mediacontroller.server
+    /// </privilege>
     /// <remarks>
     /// The MediaControllerServer APIs provides functions to update media information.
     /// </remarks>
@@ -42,15 +43,11 @@ namespace Tizen.Multimedia.MediaController
         /// The constructor of MediaControllerServer class.
         /// </summary>
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
+        /// <exception cref="UnauthorizedAccessException">Thrown when the access is denied for media controller client</exception>
         public MediaControllerServer ()
         {
-            MediaControllerError res = MediaControllerError.None;
-            res = (MediaControllerError)Interop.MediaControllerServer.Create (out _handle);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Create server failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Create server failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.Create(out _handle), "Create  server failed");
         }
 
         ~MediaControllerServer ()
@@ -136,33 +133,19 @@ namespace Tizen.Multimedia.MediaController
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
         public void UpdatePlayback(MediaControllerPlayback playback)
         {
-            MediaControllerError res = MediaControllerError.None;
-
             if (playback == null)
             {
-                MediaControllerErrorFactory.ThrowException(MediaControllerError.InvalidParameter, "playback");
+                throw new ArgumentNullException("playback is null");
             }
 
-            res = (MediaControllerError)Interop.MediaControllerServer.SetPlaybackState(_handle, (int)playback.State);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set Playback state failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set Playback state failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.SetPlaybackState(_handle, playback.State), "Set Playback state failed");
 
-            res = (MediaControllerError)Interop.MediaControllerServer.SetPlaybackPosition(_handle, playback.Position);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set Playback position failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set Playback position failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.SetPlaybackPosition(_handle, playback.Position), "Set Playback position failed");
 
-            res = (MediaControllerError)Interop.MediaControllerServer.UpdatePlayback(_handle);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Update Playback failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Update Playback failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.UpdatePlayback(_handle), "Update Playback failed");
         }
 
         /// <summary>
@@ -172,96 +155,46 @@ namespace Tizen.Multimedia.MediaController
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
         public void UpdateMetadata(MediaControllerMetadata metadata)
         {
-            MediaControllerError res = MediaControllerError.None;
-
             if (metadata == null)
             {
-                MediaControllerErrorFactory.ThrowException(MediaControllerError.InvalidParameter, "metadata");
+                throw new ArgumentNullException("metadata is null");
             }
 
-            res = (MediaControllerError)Interop.MediaControllerServer.SetMetadata(_handle, (int)MediaControllerAttributes.Title, metadata.Title);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set Title failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set Title failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.SetMetadata(_handle, MediaControllerAttributes.Title, metadata.Title), "Set Title failed");
 
-            res = (MediaControllerError)Interop.MediaControllerServer.SetMetadata(_handle, (int)MediaControllerAttributes.Artist, metadata.Artist);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set Title failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set Title failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.SetMetadata(_handle, MediaControllerAttributes.Artist, metadata.Artist), "Set Artist failed");
 
-            res = (MediaControllerError)Interop.MediaControllerServer.SetMetadata(_handle, (int)MediaControllerAttributes.Album, metadata.Album);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set Title failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set Title failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.SetMetadata(_handle, MediaControllerAttributes.Album, metadata.Album), "Set Album failed");
 
-            res = (MediaControllerError)Interop.MediaControllerServer.SetMetadata(_handle, (int)MediaControllerAttributes.Author, metadata.Author);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set Title failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set Title failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.SetMetadata(_handle, MediaControllerAttributes.Author, metadata.Author), "Set Author failed");
 
-            res = (MediaControllerError)Interop.MediaControllerServer.SetMetadata(_handle, (int)MediaControllerAttributes.Genre, metadata.Genre);
-            if (res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set Title failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set Title failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.SetMetadata(_handle, MediaControllerAttributes.Genre, metadata.Genre), "Set Genre failed");
 
-            res = (MediaControllerError)Interop.MediaControllerServer.SetMetadata(_handle, (int)MediaControllerAttributes.Duration, metadata.Duration);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set Title failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set Title failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.SetMetadata(_handle, MediaControllerAttributes.Duration, metadata.Duration), "Set Duration failed");
 
-            res = (MediaControllerError)Interop.MediaControllerServer.SetMetadata(_handle, (int)MediaControllerAttributes.Date, metadata.Date);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set Title failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set Title failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.SetMetadata(_handle, MediaControllerAttributes.Date, metadata.Date), "Set Date failed");
 
-            res = (MediaControllerError)Interop.MediaControllerServer.SetMetadata(_handle, (int)MediaControllerAttributes.Copyright, metadata.Copyright);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set Title failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set Title failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.SetMetadata(_handle, MediaControllerAttributes.Copyright, metadata.Copyright), "Set Copyright failed");
 
-            res = (MediaControllerError)Interop.MediaControllerServer.SetMetadata(_handle, (int)MediaControllerAttributes.Description, metadata.Description);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set Title failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set Title failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.SetMetadata(_handle, MediaControllerAttributes.Description, metadata.Description), "Set Description failed");
 
-            res = (MediaControllerError)Interop.MediaControllerServer.SetMetadata(_handle, (int)MediaControllerAttributes.TrackNumber, metadata.TrackNumber);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set Title failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set Title failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.SetMetadata(_handle, MediaControllerAttributes.TrackNumber, metadata.TrackNumber), "Set TrackNumber failed");
 
-            res = (MediaControllerError)Interop.MediaControllerServer.SetMetadata(_handle, (int)MediaControllerAttributes.Picture, metadata.Picture);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Set Title failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Set Title failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.SetMetadata(_handle, MediaControllerAttributes.Picture, metadata.Picture), "Set Picture failed");
 
-            res = (MediaControllerError)Interop.MediaControllerServer.UpdateMetadata(_handle);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Update Metadata failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Update Metadata failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.UpdateMetadata(_handle), "UpdateMetadata Metadata failed");
         }
 
         /// <summary>
@@ -271,13 +204,8 @@ namespace Tizen.Multimedia.MediaController
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
         public void UpdateShuffleMode(MediaControllerShuffleMode mode)
         {
-            MediaControllerError res = MediaControllerError.None;
-            res = (MediaControllerError)Interop.MediaControllerServer.UpdateShuffleMode(_handle, (int)mode);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Update Shuffle Mode failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Update Shuffle Mode failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.UpdateShuffleMode(_handle, mode), "Update Shuffle Mode failed");
         }
 
         /// <summary>
@@ -287,13 +215,8 @@ namespace Tizen.Multimedia.MediaController
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
         public void UpdateRepeatMode(MediaControllerRepeatMode mode)
         {
-            MediaControllerError res = MediaControllerError.None;
-            res = (MediaControllerError)Interop.MediaControllerServer.UpdateRepeatMode(_handle, (int)mode);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Update Repeat Mode failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Update Repeat Mode failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.UpdateRepeatMode(_handle, mode), "Update Repeat Mode failed");
         }
 
         /// <summary>
@@ -305,20 +228,15 @@ namespace Tizen.Multimedia.MediaController
         /// <exception cref="InvalidOperationException">Thrown when the operation is invalid for the current state</exception>
         public void SendCustomCommandReply(string clientName, int result, Bundle bundle)
         {
-            MediaControllerError res = MediaControllerError.None;
-            res = (MediaControllerError)Interop.MediaControllerServer.SendCommandReply (_handle, clientName, result, bundle.SafeBundleHandle);
-            if(res != MediaControllerError.None)
-            {
-                Log.Error(MediaControllerLog.LogTag, "Send reply for command failed" + res);
-                MediaControllerErrorFactory.ThrowException(res, "Send reply for command failed");
-            }
+            MediaControllerValidator.ThrowIfError(
+                Interop.MediaControllerServer.SendCommandReply(_handle, clientName, result, bundle.SafeBundleHandle), "Send reply for command failed");
         }
 
         private void RegisterPlaybackCmdRecvEvent()
         {
-            _playbackCommandCallback = (string clientName, int state, IntPtr userData) =>
+            _playbackCommandCallback = (string clientName, MediaControllerPlaybackState state, IntPtr userData) =>
             {
-                PlaybackStateCommandEventArgs eventArgs = new PlaybackStateCommandEventArgs(clientName, (MediaControllerPlaybackState)state);
+                PlaybackStateCommandEventArgs eventArgs = new PlaybackStateCommandEventArgs(clientName, state);
                 _playbackCommand?.Invoke(this, eventArgs);
             };
             Interop.MediaControllerServer.SetPlaybackStateCmdRecvCb(_handle, _playbackCommandCallback, IntPtr.Zero);
index 608884d..7035a6b 100755 (executable)
@@ -14,8 +14,6 @@
 * limitations under the License.
 */
 
-
-
 using System;
 
 namespace Tizen.Multimedia.MediaController