public async Task SendMediaCommandStateAsync(MediaCommandState state)
        {
            var message = new MediaCommandMessage();

            message.State = state;

            await _transport.SendAsync(message);
        }
        public override async Task <CommandResult> ExecuteAsync(CancellationToken cancel)
        {
            var activeTitle =
                ConnectCommand.Client
                .CurrentConsoleStatus
                .ActiveTitles
                .FirstOrDefault()
                ?.TitleId ?? 0U;

            if (activeTitle == 0)
            {
                Console.WriteLine("Don't know the active title; skipping...");
                return(CommandResult.RuntimeFailure);
            }

            var state = new MediaCommandState();

            state.TitleId = activeTitle;

            var parsed = Enum.TryParse <MediaControlCommands>(Command, true, out state.Command);

            if (!parsed)
            {
                return(CommandResult.UsageError);
            }

            try
            {
                var mediaChannel = await ConnectCommand.Client.GetMediaChannelAsync();

                await mediaChannel.SendMediaCommandStateAsync(state);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return(CommandResult.RuntimeFailure);
            }

            return(CommandResult.Success);
        }