/// <summary> /// Отправляет сообщение в очередь указанного канала. /// </summary> /// <param name="aMessage">Сообщение.</param> /// <param name="aChannelId">Логический идентификатор канала.</param> public void ProcessMessage(SoundMessage aMessage, long aChannelId) { if (aMessage == null) { throw new ArgumentNullException("aMessage"); } foreach (var channel in outChannels) { if (channel.GetChannelInfo().GetId() == aChannelId) { if (channel.IsWorking()) { channel.InsertMessage(aMessage); } else { throw new ArgumentException(string.Format("Channel {0} is not working", aChannelId)); } return; } } throw new ArgumentException(string.Format("Channel {0} was not found", aChannelId)); }
/// <summary> /// Реагирует при получении команды от контроллера времени на объявление сообщения времени. /// </summary> /// <param name="aChannelIds">Идентификаторы выходных каналов для объявления сообщения времени.</param> /// <param name="aPriority">Приоритет сообщения.</param> /// <param name="aPrefixSound">Префикс для объявления времени.</param> /// <param name="aTimePhrase">Фраза для произношения.</param> public void OnTimeAnnounce(int[] aChannelIds, int aPriority, byte[] aPrefixSound, string aTimePhrase) { var timeSound = soundStorage.ProvideSound(new[] {aTimePhrase}); var data = timeSound; if (aPrefixSound != null) { data = Enumerable.Concat(aPrefixSound, timeSound).ToArray(); } var message = new SoundMessage(data, (uint) aPriority); foreach (var channelId in aChannelIds) { channelManager.ProcessMessage(message, channelId); } }
/// <summary> /// Реагирует при получении от клиента команды на воспроизменение звукового сообщения. /// </summary> /// <param name="aCommandSession">Сессия клиента, выполнившего команду.</param> /// <param name="aChannelIds">Идентификаторы выходных каналов для звукового сообщения.</param> /// <param name="aPriotity">Приоритет сообщения.</param> /// <param name="aFiles">Файлы для воспроизведения.</param> public void OnPlaySound(CommandSession aCommandSession, int[] aChannelIds, int aPriotity, string[] aFiles) { var data = soundStorage.ProvideSound(aFiles); var message = new SoundMessage(data, (uint) aPriotity); foreach (var channelId in aChannelIds) { channelManager.ProcessMessage(message, channelId); } }